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=","):; dá " 123" "1,234". adicione trim=Ta formatou preserve.width="none"a prettyNumpara evitar isso.
MichaelChirico
@MichaelChirico Obrigado pela informação extra. Eu adicionei isso à resposta.
Joris Meys
Observe se você também define dígitos para casas decimais, se você tiver um vetor, isso pode dar errado se os números forem bem diferentes. Da ajuda "Os vetores numéricos são codificados com o número mínimo de casas decimais necessárias para exibir todos os elementos até pelo menos os dígitos dígitos significativos. No entanto, se todos os elementos tiverem zeros à direita, o número de casas decimais é reduzido até nsmall"
2015
1
Então 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.
micstr de
Passei algum tempo tentando descobrir o scientificque está escondido no palheiro de argumentos para format. Obrigado!
Esta é uma resposta muito tarde, e pode ter sido verdade no passado que 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".
steveb,
2
escalas :: vírgula (1000000) parece valer a pena.
Joe
3
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.
Respostas:
Você pode tentar o formato ou prettyNum, mas ambas as funções retornam um vetor de caracteres. Eu só usaria isso para imprimir.
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:
Adicione
trim=TRUE
aformat
oupreserve.width="none"
aprettyNum
para evitar isso:fonte
prettyNum(c(123,1234),big.mark=",")
:; dá" 123" "1,234"
. adicionetrim=T
aformat
oupreserve.width="none"
aprettyNum
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 paraformat
. Obrigado!Veja
?format
:fonte
As outras respostas postadas obviamente funcionam - mas sempre usei
fonte
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 doTidyverse
) faz exatamente isso:O
scales
pacote parece funcionar muito bemggplot2
, permitindo um controle preciso de como os números são exibidos em gráficos e gráficos.fonte