我想要对报告中的数字进行 有效数字 格式化,但保留尾部的有效零,并正确格式化大数值。
例如,数字 c(10.00001,12345,1234.5,123.45,1.2345,0.12345) 保留3个有效数字后应为 10.0, 12300, 1230, 123, 1.23, 0.123,但不同方法得到不同结果(且似乎没有一种通用方法可行)。
> numbers<-c(10.00001,12345,1234.5,123.45,1.2345,0.12345)
> for(n in seq(numbers)){
+ print(signif(numbers[n],digits=3))
+ print(format(numbers[n],digits=3))
+ print(formatC(numbers[n], digits=3,format="fg"))
+ print(formatC(numbers[n], digits=3,format="fg", flag="#"))
+ }
[1] 10
[1] "10"
[1] " 10"
[1] "10.0"
[1] 12300
[1] "12345"
[1] "12345"
[1] "12345."
[1] 1230
[1] "1234"
[1] "1234"
[1] "1234."
[1] 123
[1] "123"
[1] " 123"
[1] "123."
[1] 12.3
[1] "12.3"
[1] "12.3"
[1] "12.3"
[1] 1.23
[1] "1.23"
[1] "1.23"
[1] "1.23"
[1] 0.123
[1] "0.123"
[1] "0.123"
[1] "0.123"
这里,signif和format函数将10.00001结果四舍五入。使用flag="#"的formatC可以正确处理小数但无法处理大数字。
有更好的方法吗?
apply
函数族仍然使用循环吗?但是它抽象了循环,使代码更清晰、更易读,减少了繁琐的操作。对吗? - Richard Herron1235
(因为 5 将 4 进位)...就像round(.123456,digits=4)
给出[1] 0.1235
。不过还是感谢你的提问!+1 - Alexis