R 中数字的逗号分隔符?

R 中是否有一个函数来显示用逗号分隔的大数字?

也就是说,从 10000001,000,000

85415 次浏览

See ?format:

> format(1e6, big.mark=",", scientific=FALSE)
[1] "1,000,000"
>

You can try either format or prettyNum, but both functions return a vector of characters. I'd only use that for printing.

> prettyNum(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"
> format(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"

EDIT: As Michael Chirico says in the comment:

Be aware that these have the side effect of padding the printed strings with blank space, for example:

> prettyNum(c(123,1234),big.mark=",")
[1] "  123" "1,234"

Add trim=TRUE to format or preserve.width="none" to prettyNum to prevent this:

> 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"

The other answers posted obviously work - but I have always used

library(scales)
label_comma()(1000000)

I think Joe's comment to MatthewR offers the best answer and should be highlighted:

As of Sept 2018, the scales package (part of the Tidyverse) does exactly this:

> library(scales)


> x <- 10e5
> comma(x)


[1] "1,000,000"

The scales package appears to play very nicely with ggplot2, allowing for fine control of how numerics are displayed in plots and charts.