Однією з речей, яка мене здивувала як новачка для R, було те, як відформатувати число у відсотках для друку.
Наприклад, відобразити 0.12345
як 12.345%
. У мене є цілий ряд обхідних завдань для цього, але жодне з них не здається "привітним для новичок". Наприклад:
set.seed(1)
m <- runif(5)
paste(round(100*m, 2), "%", sep="")
[1] "26.55%" "37.21%" "57.29%" "90.82%" "20.17%"
sprintf("%1.2f%%", 100*m)
[1] "26.55%" "37.21%" "57.29%" "90.82%" "20.17%"
Запитання: Чи є для цього базовою функцією R? Як варіант, чи існує широко використовуваний пакет, який забезпечує зручну обгортку?
Незважаючи на пошук чогось подібного в ?format
, ?formatC
і ?prettyNum
я ще не знайшов належно зручної обгортки в базі R. ??"percent"
не дав нічого корисного. library(sos); findFn("format percent")
повертає 1250 звернень - тому знову не корисно. ggplot2
має функцію, percent
але це не дає контролю над точністю округлення.
sprintf
це цілком чудово для тієї підмножини кодерів R, які також є програмістами. Я багато кодував у своєму житті, включаючи COBOL (здригання) та fortran (показує свій вік). Але я не вважаю sprintf
правила форматування очевидними (переклад: WTF?). І звичайно, спеціалізовану обгортку потрібно простіше зателефонувати, ніж спринт, наприклад:format_percent(x=0.12345, digits=2)
sprintf()
це трохи більше часу , ніж дізнатися , що пакет Foo містить format_percent()
. Що станеться, якщо користувач потім не хоче форматувати у відсотках, а щось інше, що схоже? Їм потрібно знайти іншу обгортку. У перспективі навчання базовим інструментам буде корисно.
%
, що символ коментаря в LaTeX, який є формою звітності "за замовчуванням" для R. Тому, хоча це може бути корисним для маркування графіків, слід бути обережним, чи потрібно відформатувати номер форматування.
sprintf
здається, улюблене рішення у списках розсилки, і я не бачив кращого рішення. Будь-яка вбудована функція все одно не буде набагато простішою, так?