Есть ли в R функция для отображения больших чисел, разделенных запятыми?
т.е. от 1000000до 1,000,000.
Ответы:
Вы можете попробовать формат или prettyNum, но обе функции возвращают вектор символов. Я бы использовал это только для печати.
> prettyNum(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"
> format(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"
РЕДАКТИРОВАТЬ: Как говорит Майкл Кирико в комментарии:
Имейте в виду, что они имеют побочный эффект заполнения напечатанных строк пустым пространством, например:
> prettyNum(c(123,1234),big.mark=",")
[1] " 123" "1,234"
Добавьте trim=TRUEк formatили preserve.width="none"к, prettyNumчтобы предотвратить это:
> prettyNum(c(123,1234),big.mark=",", preserve.width="none")
[1] "123" "1,234"
> format(c(123,1234),big.mark=",", trim=TRUE)
[1] "123" "1,234"
prettyNum(c(123,1234),big.mark=","):; дает " 123" "1,234". добавить trim=Tв formatили preserve.width="none"для prettyNumпредотвращения этого.
format(c(12345678,0.001234),big.mark=",", trim=TRUE, digits = 2, scientific = FALSE)получается «12,345,678.0000» «0,0012», чтобы можно было увидеть достаточно. т.е. форматирование мест не выполняется поэлементно. Поймал меня так хотел этим поделиться.
scientificчто спрятано в стоге сена аргументов format. Спасибо!
Смотрите ?format:
> format(1e6, big.mark=",", scientific=FALSE)
[1] "1,000,000"
>
Другие опубликованные ответы, очевидно, работают, но я всегда использовал
library(scales)
comma_format()(1000000)
comma_formatне обрабатывать реальные цифры , но теперь вы можете сделать следующее: scales::comma_format(digits = 12)(1000000.789)что приводит к следующему: "1,000,000.789".
Я думаю, что комментарий Джо к MatthewR предлагает лучший ответ, и его следует выделить:
По состоянию на сентябрь 2018 года scalesпакет (часть Tidyverse) делает именно это:
> library(scales)
> x <- 10e5
> comma(x)
[1] "1,000,000"
scalesПакет , кажется, играет очень хорошо с ggplot2, что позволяет для точного контроля как Числовые отображаются на графиках и диаграммах.