首页 > 解决方案 > 如何在 R 数据框中制作漂亮的“自动”数字格式?

问题描述

R 或 R 工作室是否有任何选项可以“自动”表示要显示或导出的数字。就像我在一列中有非常小的数字,比如 0.000023,所以它应该显示或导出为“2.3e-05”,但另一个数字(如 10.23)应该“按原样”显示,而不会将其更改为“指数”格式。>

 rf_test
       RfC  RfD_ing RfD_per RfD_derm
2  0.00002       NA 2.0e-03       NA
3  0.10000       NA 1.1e+01       NA
4  0.00500 1.43e-03 1.0e+00 0.100000
5  0.03000       NA 4.0e+00       NA
6  0.00007       NA 2.0e-02 0.000070
7  1.00000 2.86e-05 5.0e-03 0.000060
8  0.00005 1.43e-05 1.4e-01 0.001840
....

R 控制台

像这样导出时,导出文件看起来比在 RStudio 控制台中更讨厌:

write.table(rf_test, "rf_test.dat", sep = "\t", row.names = FALSE, na = "NA")
带有表格的文件

有这种格式的建议吗?

标签: rformattingnumeric

解决方案


您是否尝试过该format()功能(或者,如果您想更严格地控​​制数字的显示方式,请使用该formatC()功能)

您可以在 if/else 语句中使用整数除法运算符编写自己的函数,%/%以决定在更改格式之前数字应该有多少小数。像这样的东西:

test_func <- function(x){

 res <- 0
 res <- ifelse(x %/% 0.0001 > 0, format(x, scientific = FALSE, trim = TRUE), format(x, scientific = TRUE))
 return(res)

}

结果:

print(rf_test %>% mutate(RfD_per_new = test_func(RfD_per)), n = 26)
# A tibble: 26 x 5
        RfC     RfD_ing   RfD_per  RfD_derm RfD_per_new
      <dbl>       <dbl>     <dbl>     <dbl> <chr>      
 1 0.00002  NA           0.002    NA        0.00200    
 2 0.1      NA          11        NA        11.00000   
 3 0.005     0.00143     1         0.1      1.00000    
 4 0.03     NA           4        NA        4.00000    
 5 0.000070 NA           0.02      0.000070 0.02000    
 6 1         0.0000286   0.005     0.00006  0.00500    
 7 0.00005   0.0000143   0.14      0.00184  0.14000    
 8 0.6      NA           0.3      NA        0.30000    
 9 0.00002   0.00000571  0.02      0.016    0.02000    
10 0.00005  NA           0.02      0.0054   0.02000    
11 0.00002   0.0402      0.019     0.012    0.01900    
12 0.0009    0.3         0.3       0.06     0.30000    
13 0.04     NA          NA        NA        NA         
14 0.00003   0.000300    0.000300  0.000123 0.00030    
15 0.00008  NA           0.005    NA        0.00500    
16 0.012    NA           0.005     0.0019   0.00500    
17 0.02     NA           0.005     0.0009   0.00500    
18 0.00002   0.0000571   0.0005    0.00001  0.00050    
19 0.02     NA           0.6      NA        0.60000    
20 0.0004    0.000395    0.0004    0.000008 0.00040    
21 0.0005    0.000143    0.07      0.0049   0.07000    
22 0.0002   NA          NA        NA        NA         
23 0.1      NA           0.0025   NA        0.00250    
24 0.000300  0.0000857   0.000300  0.000021 0.00030    
25 0.00023  NA           0.000070 NA        7.0e-05    
26 0.0005    0.00352     0.0035    0.000525 0.00350  

根据您的喜好更改整数除法运算符后的数字以调整截止点。

这行得通吗?:)


推荐阅读