我想创建一个函数,它返回一个数字向量,其精度反射(reflect)为只有 n 个有效数字,但没有尾随零,而不是科学记数法
例如,我想要
somenumbers <- c(0.000001234567, 1234567.89)
myformat(x = somenumbers, n = 3)
返回
[1] 0.00000123 1230000
我一直在玩
format
、 formatC
和 sprintf
,但他们似乎不想独立处理每个数字,他们将数字作为字符串返回(在引号中)。这是我得到的最接近的例子:
> format(signif(somenumbers,4), scientific=FALSE)
[1] " 0.000001235" "1235000.000000000"
最佳答案
您可以使用 signif 函数四舍五入到给定数量的有效数字。如果您不想要额外的尾随 0,则不要“打印”结果,而是对它们执行其他操作。
> somenumbers <- c(0.000001234567, 1234567.89)
> options(scipen=5)
> cat(signif(somenumbers,3),'\n')
0.00000123 1230000
>
关于r - 如何格式化具有指定精度级别的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5225920/