我想创建一个函数,它返回一个数字向量,通过只有n个有效数字反映的精度,但没有尾随零,而不是科学记数法
例如,我想
somenumbers <- c(0.000001234567, 1234567.89)
myformat(x = somenumbers, n = 3)
Run Code Online (Sandbox Code Playgroud)
回来
[1] 0.00000123 1230000
Run Code Online (Sandbox Code Playgroud)
我一直在玩format,formatC和sprintf,但他们似乎并不想对每个号码独立工作,并且它们将返回数字作为字符串(引号).
这是我得到的最接近的例子:
> format(signif(somenumbers,4), scientific=FALSE)
[1] " 0.000001235" "1235000.000000000"
Run Code Online (Sandbox Code Playgroud)
您可以使用signif函数舍入到给定的有效位数.如果你不想要额外的尾随0,那么不要"打印"结果,而是用它们做其他事情.
> somenumbers <- c(0.000001234567, 1234567.89)
> options(scipen=5)
> cat(signif(somenumbers,3),'\n')
0.00000123 1230000
>
Run Code Online (Sandbox Code Playgroud)
sprintf 似乎这样做:
sprintf(c("%1.8f", "%1.0f"), signif(somenumbers, 3))
[1] "0.00000123" "1230000"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4370 次 |
| 最近记录: |