简单高效滴处理R语言里的小数
2021-02-24 本文已影响0人
小洁忘了怎么分身
举个栗子
set.seed(1166)
x = abs(rnorm(10,sd = 0.01))
x
## [1] 0.0082064320 0.0053871893 0.0062491614 0.0019154451 0.0047464366
## [6] 0.0002553026 0.0006677650 0.0103994341 0.0099307883 0.0210326617
这是一组随机数,假如需要把这样的一组数字放在图里,是需要整齐统一的显示出来。基本上有两种思路,一是保留相同的位数,二是用相同格式的科学计数法表示。
方法一:统一保留n位数字
注意并不是小数点后几位,也不是有效数字几位,是总共几位数字。
round(x,3)
## [1] 0.008 0.005 0.006 0.002 0.005 0.000 0.001 0.010 0.010 0.021
round(x,6)
## [1] 0.008206 0.005387 0.006249 0.001915 0.004746 0.000255 0.000668 0.010399
## [9] 0.009931 0.021033
方法二:科学计数法
网上存留的大多数答案是用options去设置。今天我在搜索的时候找到了一个方便的函数,可以自由转换科学计数法与普通数字,特意把它记录下来: https://stackoverflow.com/questions/9397664/force-r-not-to-use-exponential-notation-e-g-e10
format(x, scientific = F)
## [1] "0.0082064320" "0.0053871893" "0.0062491614" "0.0019154451" "0.0047464366"
## [6] "0.0002553026" "0.0006677650" "0.0103994341" "0.0099307883" "0.0210326617"
format(x, scientific = T,digits = 3)
## [1] "8.21e-03" "5.39e-03" "6.25e-03" "1.92e-03" "4.75e-03" "2.55e-04"
## [7] "6.68e-04" "1.04e-02" "9.93e-03" "2.10e-02"
注意format函数输出的是字符串型的结果,不能拿来计算了,不过多数情况下我们仅仅展示在图上,字符串型照用不误。比如这个链接里的热图p值:https://www.jianshu.com/p/332cc7cc3e16