Одна из вещей, которая раньше смущала меня как новичка в 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?). И, конечно же, специальную оболочку должно быть проще вызвать, чем sprintf, например:format_percent(x=0.12345, digits=2)
sprintf()
вряд ли займет больше времени, чем выяснение того, что пакет foo содержит format_percent()
. Что произойдет, если пользователь хочет форматировать не в процентах, а в чем-то похожем? Им нужно найти другую обертку. В конечном итоге изучение базовых инструментов принесет пользу.
%
, что символ комментария в LaTeX, который является форматом отчетности "по умолчанию" для R. Таким образом, хотя он может быть полезен для маркировки графиков, необходимо соблюдать осторожность, если форматируемое число должно быть свернуто.
sprintf
кажется, это любимое решение в списках рассылки, и я не видел лучшего решения. Все равно вызвать встроенную функцию будет не так просто, верно?