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=TRUEa formatou preserve.width="none"a prettyNumpara 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=Ta formatou preserve.width="none"a prettyNumpara 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.
scientificque 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_formatnã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 scalespacote (parte do Tidyverse) faz exatamente isso:
> library(scales)
> x <- 10e5
> comma(x)
[1] "1,000,000"
O scalespacote parece funcionar muito bem ggplot2, permitindo um controle preciso de como os números são exibidos em gráficos e gráficos.