Мне нужно сделать округление, подобное этому, и преобразовать его в символ:
as.character(round(5.9999,2))
Я ожидаю, что оно станет 6.00, но это просто даст мне 6
6.00
6
В любом случае, я могу заставить его показать 6.00?
Попробуйте воспользоваться одним из следующих способов:
> sprintf("%3.2f", round(5.9999, digits=2)) [1] "6.00 > sprintf("%3.2f", 5.999) # no round needed either [1] "6.00
Также есть formatC() и prettyNum().
formatC()
prettyNum()
Чтобы объяснить, что происходит - вызов round(5.9999, 2) округляет ваш номер до ближайшего сотого места, что дает вам число (не строка) очень близко к (или точно равно, если вам повезло с представлениями с плавающей точкой) 6.00. Затем as.character() смотрит на это число, берет до 15 значащих цифр (см. ?as.character), чтобы представить его с достаточной точностью, и определяет, что необходима только 1 значащая цифра. Так вот, что вы получаете.
round(5.9999, 2)
as.character()
?as.character
Как указал Дирк, formatC () - еще одна опция.
формат C (x = 5,999, цифры = 2, формат = 'f')