8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 R 中格式化小数位

DOKARR 2月前

219 0

我有一个数字,例如 1.128347132904321674821,我想在输出到屏幕(或写入文件)时仅显示两位小数。该怎么做?x <- 1。

我有一个数字,例如 1.128347132904321674821,我想在输出到屏幕(或写入文件)时仅显示两位小数。该怎么做?

x <- 1.128347132904321674821

编辑:

使用:

options(digits=2)

已建议将其作为可能的答案。有没有办法在脚本中指定一次性使用?当我将其添加到脚本中时,它似乎没有做任何不同的事情,而且我也不想重新输入大量内容来格式化每个数字(我正在自动生成一份非常大的报告)。

--

答案:round(x, digits=2)

帖子版权声明 1、本帖标题:在 R 中格式化小数位
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由DOKARR在本站《object》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 背景: 本页上建议的一些答案(例如 signif , options(digits=...) )不能保证显示任意数字的一定数量的小数。我认为这是 R 中的设计功能,良好的科学实践涉及根据“有效 数字 ”原则显示一定数量的数字。但是,在许多领域(例如, APA 样式 、商业报告),格式要求规定显示一定数量的小数。这通常是为了一致性和标准化目的,而不是关心有效数字。

    解决方案

    以下代码精确显示数字的两位小数 x .

    format(round(x, 2), nsmall = 2)
    

    例如:

    format(round(1.20, 2), nsmall = 2)
    # [1] "1.20"
    format(round(1, 2), nsmall = 2)
    # [1] "1.00"
    format(round(1.1234, 2), nsmall = 2)
    # [1] "1.12"
    

    更通用的函数如下,其中 x 是数字, k 是显示的小数位数。 trimws 删除任何前导空格,如果您有一个数字向量,这将很有用。

    specify_decimal <- function(x, k) trimws(format(round(x, k), nsmall=k))
    

    例如,

    specify_decimal(1234, 5)
    # [1] "1234.00000"
    specify_decimal(0.1234, 5)
    # [1] "0.12340"
    

    替代方案讨论:

    formatC 答案 sprintf 答案 效果相当好。但它们在某些情况下会显示负零,这可能是不想要的。即,

    formatC(c(-0.001), digits = 2, format = "f")
    # [1] "-0.00"
    sprintf(-0.001, fmt = '%#.2f')
    # [1] "-0.00"
    

    一个可能的解决方法如下:

    formatC(as.numeric(as.character(round(-.001, 2))), digits = 2, format = "f")
    # [1] "0.00" 
    
返回
作者最近主题: