Почему функция R format () не работает должным образом для форматирования числового вектора?

#r #format #digits

#r #формат #цифры

Вопрос:

Это должно быть очень просто. Этот вектор:

 test = c(0.027, 0.01872169, 0.1869244, 0.6997091, 0.06764486, 0.1436803, 
0.001610974, 0.5461064, 0.3066009, 0.002001355, 0.03864836, 0.391397, 
0.5145854, 0.05524137, 0.01838195, 0.02019719, 0.346739, 0.5876818, 
0.02694247, 8.277247e-05, 0.1929826, 0.7863224, 0.02061222)

class(test)
[1] "numeric"
 

При прохождении format(test, digits = 2, scientific = FALSE) должно выдаваться 2 десятичных знака.

Вместо этого у меня есть это:

  format(test, digits = 2, scientific = FALSE)
 [1] "0.027000" "0.018722" "0.186924" "0.699709" "0.067645" "0.143680" "0.001611" "0.546106" "0.306601" "0.002001" "0.038648" "0.391397" "0.514585" "0.055241" "0.018382"
[16] "0.020197" "0.346739" "0.587682" "0.026942" "0.000083" "0.192983" "0.786322" "0.020612"
 

Понятия не имею, что происходит. Я в Rstudio 1.4.1103 с R 4.0.3 на macOS Mojave 10.14.6. Как «принудительно» форматировать, чтобы просто печатать 2 десятичных знака вместо того, чтобы убедиться, что будет минимум 2 десятичных знака, как в «0.000083»?

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

1. может быть, попробовать round(test,2)

2. Спасибо. Точно.

Ответ №1:

Обычно я предпочитаю sprintf форматировать числа. Дает намного больше контроля.

 sprintf(test, fmt = "%0.2f")
# [1] "0.03" "0.02" "0.19" "0.70" "0.07" "0.14" "0.00" "0.55" "0.31" "0.00" "0.04" "0.39" "0.51" "0.06" "0.02" "0.02" "0.35" "0.59"
# [19] "0.03" "0.00" "0.19" "0.79" "0.02"

 

Ответ №2:

Вы можете использовать round() для округления чисел, указав имя вектора и количество десятичных знаков, например:

 round(test, 2)