Однією з речей, яка мене здивувала як новачка для 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здається, улюблене рішення у списках розсилки, і я не бачив кращого рішення. Будь-яка вбудована функція все одно не буде набагато простішою, так?