Comma separator for numbers in R?
RR Problem Overview
Is there a function in R to display large numbers separated with commas?
i.e., from 1000000
to 1,000,000
.
R Solutions
Solution 1 - R
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"
Solution 2 - R
See ?format
:
> format(1e6, big.mark=",", scientific=FALSE)
[1] "1,000,000"
>
Solution 3 - R
The other answers posted obviously work - but I have always used
library(scales)
label_comma()(1000000)
Solution 4 - R
I think Joe's comment to MatthewR offers the best answer and should be highlighted:
As of Sept 2018, the [scales
](https://www.tidyverse.org/blog/2018/08/scales-1-0-0/ "Tidyverse: Scales 1.0.0") 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.