我想创建一个函数,它返回一个数字向量精度,只有 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"
答案 0 :(得分:7)
您可以使用signif函数舍入到给定的有效位数。如果你不想要额外的尾随0,那么不要“打印”结果,而是用它们做其他事情。
> somenumbers <- c(0.000001234567, 1234567.89)
> options(scipen=5)
> cat(signif(somenumbers,3),'\n')
0.00000123 1230000
>
答案 1 :(得分:5)
sprintf
似乎这样做了:
sprintf(c("%1.8f", "%1.0f"), signif(somenumbers, 3))
[1] "0.00000123" "1230000"
答案 2 :(得分:1)
怎么样
myformat <- function(x, n) {
noquote(sapply(a,function(x) format(signif(x,2), scientific=FALSE)))
}