例如,如果将21690i写入到一个十进制数,则将其作为两位输出(例如,将216901写入到一个十进制数).怎么做到的?
x <- 1.128347132904321674821
编辑:
使用:
options(digits=2)
这是一个可能的答案.有没有办法在脚本中指定一次性使用?当我把它添加到我的脚本中时,它似乎没有做任何不同的事情,而且我对大量重新键入以格式化每个数字不感兴趣(我正在自动生成一个非常大的报告).
--
答案:四舍五入(x,数字=2)
例如,如果将21690i写入到一个十进制数,则将其作为两位输出(例如,将216901写入到一个十进制数).怎么做到的?
x <- 1.128347132904321674821
编辑:
使用:
options(digits=2)
这是一个可能的答案.有没有办法在脚本中指定一次性使用?当我把它添加到我的脚本中时,它似乎没有做任何不同的事情,而且我对大量重新键入以格式化每个数字不感兴趣(我正在自动生成一个非常大的报告).
--
答案:四舍五入(x,数字=2)
Background:本页建议的一些答案(例如,signif
options(digits=...)
)不能保证对任意数字显示一定数量的小数.我认为这是R中的一个设计特征,好的科学实践包括根据"significant figures"原则显示一定数量的数字.然而,在许多领域(例如APA style、业务报告),格式要求要求显示一定数量的小数位数.这通常是出于一致性和标准化的目的,而不是关心重要的数字.
Solution:
下面的代码正好显示数字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"
Discussion of alternatives:
formatC answers和sprintf answers运行得相当好.但在某些情况下,它们会显示负零,这可能是不需要的.即.,
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"