Tibble / Data_frame не округляется с помощью mutate_if () - PullRequest
0 голосов
/ 24 мая 2018

У меня есть tibble с характеристиками, похожими на эти:

set.seed(123)


df <- tibble(
  x = sample(LETTERS[1:3],10,T),
  y = rdunif(10,7.5),
  z = rdunif(10,7.5)
) 

, что дает:

# A tibble: 10 x 3
   x         y     z
   <chr> <dbl> <dbl>
 1 A      8.00  7.00
 2 C      4.00  6.00
 3 B      6.00  5.00
 4 C      5.00  8.00
 5 C      1.00  5.00
 6 A      7.00  6.00
 7 B      2.00  5.00
 8 C      1.00  5.00
 9 B      3.00  3.00
10 B      8.00  2.00

Я бы хотел округлить числовые переменные, используя mutate_if();Я использую этот код.

df %>% 
  mutate_if(is.numeric, funs(round(., 1)))

, который выдает то же, что и выше (без округления).

# A tibble: 10 x 3
   x         y     z
   <chr> <dbl> <dbl>
 1 A      8.00  7.00
 2 C      4.00  6.00
 3 B      6.00  5.00
 4 C      5.00  8.00
 5 C      1.00  5.00
 6 A      7.00  6.00
 7 B      2.00  5.00
 8 C      1.00  5.00
 9 B      3.00  3.00
10 B      8.00  2.00

Я не получаю никаких предупреждений, и кажется, что код работаетхорошо.Я просто не получаю ожидаемого ответа.

ОТВЕТ

Я не задавал правильный вопрос.Я ищу, чтобы ограничить количество цифр числовых столбцов в tibble.Я искал функцию sprintf в baseR.

df %>%
  mutate_if(is.numeric, funs(sprintf("%0.1f", .)))

1 Ответ

0 голосов
/ 24 мая 2018

Установите количество значащих цифр при печати тиблов

options(pillar.sigfig=1)

Различные опции для управления печатью тиблов

Я сгенерировал новые данные, которые я покажу ниже допосле настройки параметров

# # A tibble: 10 x 3
   # x          y      z
   # <chr>  <dbl>  <dbl>
 # 1 A     0.0458 0.665 
 # 2 B     0.442  0.0948
 # 3 B     0.799  0.384 
 # 4 B     0.122  0.274 
 # 5 A     0.561  0.815 
 # 6 A     0.207  0.449 
 # 7 A     0.128  0.810 
 # 8 B     0.753  0.812 
 # 9 A     0.895  0.794 
# 10 C     0.374  0.440 


# # A tibble: 10 x 3
   # x         y     z
   # <chr> <dbl> <dbl>
 # 1 A      0.05  0.7 
 # 2 B      0.4   0.09
 # 3 B      0.8   0.4 
 # 4 B      0.1   0.3 
 # 5 A      0.6   0.8 
 # 6 A      0.2   0.4 
 # 7 A      0.1   0.8 
 # 8 B      0.8   0.8 
 # 9 A      0.9   0.8 
# 10 C      0.4   0.4 
...