Как сделать хороший "автоматический" формат нумерации c в R-кадре? - PullRequest
0 голосов
/ 12 апреля 2020

Есть ли в R или R studio какие-либо опции для "автоматического" представления чисел для отображения или экспорта. Например, если у меня в одном столбце очень маленькое число, скажем, 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 console

Файл экспорта при экспорте выглядит даже более неприятно, чем в консоли RStudio:

write .table (rf_test, "rf_test.dat", sep = "\ t", row.names = FALSE, na = "NA") Файл с таблицей

Есть предложения с таким форматированием?

1 Ответ

0 голосов
/ 12 апреля 2020

Вы пробовали использовать функцию 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  

Измените число после оператора целочисленного деления на свое усмотрение, чтобы настроить точку отсечения.

Будет ли это работать ? :)

...