Respostas:
Você pode tentar o formato ou prettyNum, mas ambas as funções retornam um vetor de caracteres. Eu só usaria isso para imprimir.
> prettyNum(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"
> format(12345.678,big.mark=",",scientific=FALSE)
[1] "12,345.68"
EDIT: Como Michael Chirico diz no comentário:
Esteja ciente de que eles têm o efeito colateral de preencher as strings impressas com espaço em branco, por exemplo:
> prettyNum(c(123,1234),big.mark=",")
[1] " 123" "1,234"
Adicione trim=TRUE
a format
ou preserve.width="none"
a prettyNum
para evitar isso:
> 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=",")
:; dá " 123" "1,234"
. adicione trim=T
a format
ou preserve.width="none"
a prettyNum
para evitar isso.
format(c(12345678,0.001234),big.mark=",", trim=TRUE, digits = 2, scientific = FALSE)
dá `" 12.345.678,0000 "" 0,0012 "para que o suficiente possa ser visto. ou seja, a formatação dos locais não é feita elemento a elemento. Me surpreendeu com tanta vontade de compartilhar isso.
scientific
que está escondido no palheiro de argumentos para format
. Obrigado!
Veja ?format
:
> format(1e6, big.mark=",", scientific=FALSE)
[1] "1,000,000"
>
As outras respostas postadas obviamente funcionam - mas sempre usei
library(scales)
comma_format()(1000000)
comma_format
não lidar com números reais, mas agora você pode fazer o seguinte: scales::comma_format(digits = 12)(1000000.789)
o que resulta no seguinte: "1,000,000.789"
.
Acho que o comentário de Joe para MatthewR oferece a melhor resposta e deve ser destacado:
Desde setembro de 2018, o scales
pacote (parte do Tidyverse
) faz exatamente isso:
> library(scales)
> x <- 10e5
> comma(x)
[1] "1,000,000"
O scales
pacote parece funcionar muito bem ggplot2
, permitindo um controle preciso de como os números são exibidos em gráficos e gráficos.