如何格式化具有指定精度级别的数字?

Abe*_*Abe 5 format r

我想创建一个函数,它返回一个数字向量,通过只有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,formatCsprintf,但他们似乎并不想对每个号码独立工作,并且它们将返回数字作为字符串(引号).

这是我得到的最接近的例子:

> format(signif(somenumbers,4), scientific=FALSE)
[1] "      0.000001235" "1235000.000000000"
Run Code Online (Sandbox Code Playgroud)

Gre*_*now 7

您可以使用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)


Ist*_*sta 5

sprintf 似乎这样做:

sprintf(c("%1.8f", "%1.0f"), signif(somenumbers, 3))
[1] "0.00000123" "1230000"
Run Code Online (Sandbox Code Playgroud)