заставьте r не округлять результаты после мутации

#r

Вопрос:

У меня есть набор переменных, начинающихся с ppp_ того, что соответствует id столбцу фрейма данных. Я хочу разделить каждую из колонок от X1 до X5 на соответствующую переменную ppp_xxx .

 ppp_TZA = 803.8115234375
ppp_ZMB = 0.539304196834564
ppp_SGP = 0.879599809646606
ppp_TUR = 1.162452

> set.seed(10000)
> dd <- data.frame(id=c("TZA", "ZMB", "SGP", "TUR"), matrix(runif(5*4)*1000, nrow=4))
> dd
   id        X1       X2       X3       X4       X5
1 TZA 321.68642 452.6506 106.8596 859.7612 428.8721
2 ZMB  94.38782 386.7600 837.7849 728.1341 243.5673
3 SGP 468.95386 550.1910 488.5095 921.8389 611.7136
4 TUR 990.72595 838.9120 494.1026 580.5896 262.3972
> dd %>% rowwise() %>% mutate(across(.cols=(2:4), .fns = ~.x/get(paste0("ppp_",id))))
# A tibble: 4 x 6
# Rowwise: 
  id         X1      X2       X3    X4    X5
  <chr>   <dbl>   <dbl>    <dbl> <dbl> <dbl>
1 TZA     0.400   0.563    0.133  860.  429.
2 ZMB   175.    717.    1553.     728.  244.
3 SGP   533.    626.     555.     922.  612.
4 TUR   852.    722.     425.     581.  262.
 

Однако в результате цифры округляются автоматически, без того, чтобы я устанавливал округление. Я пытался options(digits=10) , но это не помогает.

Комментарии:

1. Результат не округляется, отображаются только 3 значащие цифры.

Ответ №1:

Вы можете отобразить больше цифр, изменив параметры тиббла, т. е. options(pillar.sigfig) = 7 . Стоит отметить, что цифры на самом деле не потеряны, просто не отображаются в кадре, т. е. если вы это сделали:

 x <- dd %>% rowwise() %>% mutate(across(.cols=(2:4), .fns = ~.x/get(paste0("ppp_",id))))
x[1, 2] %>% as.numeric()
 

вы увидите полные значения и подтвердите, что они есть.