如何在 R 数据框中制作漂亮的 "auto" 数字格式?

How to make nice "auto" numeric format in R dataframe?

R 或 R studio 是否有任何选项可用于 "auto" 要显示或导出的数字表示形式。就像我在一列中有非常小的数字,比如 0.000023,所以它应该显示或导出为“2.3e-05”,但是另一个数字,如 10.23 应该显示 "as is",而不将其更改为 "exponential" 格式。 >

 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
....

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

write.table(rf_test, "rf_test.dat", sep = "\t", row.names = FALSE, na = "NA")
File with table

对这种格式有什么建议吗?

您是否尝试过 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  

根据自己的喜好更改整数除法运算符后的数字以调整分界点。

这行得通吗? :)