R 如何格式化具有指定精度级别的数字?
我想创建一个函数,该函数返回一个数字向量,其精度反映为只有n个有效数字,但没有尾随的零,而不是用科学记数法 e、 g,我想R 如何格式化具有指定精度级别的数字?,r,format,R,Format,我想创建一个函数,该函数返回一个数字向量,其精度反映为只有n个有效数字,但没有尾随的零,而不是用科学记数法 e、 g,我想 somenumbers <- c(0.000001234567, 1234567.89) myformat(x = somenumbers, n = 3) 我一直在玩format、formatC和sprintf,但他们似乎不想独立处理每个数字,而是将数字作为字符串(引号)返回 这是我得到的最接近的例子: > format(signif(somenumbers,
somenumbers <- c(0.000001234567, 1234567.89)
myformat(x = somenumbers, n = 3)
我一直在玩format
、formatC
和sprintf
,但他们似乎不想独立处理每个数字,而是将数字作为字符串(引号)返回
这是我得到的最接近的例子:
> format(signif(somenumbers,4), scientific=FALSE)
[1] " 0.000001235" "1235000.000000000"
怎么样
myformat <- function(x, n) {
noquote(sapply(a,function(x) format(signif(x,2), scientific=FALSE)))
}
myformat您可以使用signif函数四舍五入到给定数量的有效数字。如果不需要额外的尾随0,则不要“打印”结果,而是对其执行其他操作
> somenumbers <- c(0.000001234567, 1234567.89)
> options(scipen=5)
> cat(signif(somenumbers,3),'\n')
0.00000123 1230000
>
>一些数字选项(scipen=5)
>cat(签名(某些数字,3),“\n”)
零点零零零零零一二三一二三零零零零
>
sprintf
似乎做到了这一点:
sprintf(c("%1.8f", "%1.0f"), signif(somenumbers, 3))
[1] "0.00000123" "1230000"
这很好,但我希望它返回一个数字向量,因此,options(digits=5)
在某些情况下可能很有用。
sprintf(c("%1.8f", "%1.0f"), signif(somenumbers, 3))
[1] "0.00000123" "1230000"