2010-10-01 4 views

Répondre

89

Vous pouvez soit le format ou prettyNum, mais les deux fonctions renvoient un vecteur de caractères. Je ne l'utiliserais que pour l'impression.

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

EDIT: Comme Michael Chirico dit dans le commentaire:

Soyez conscient que ceux-ci ont l'effet secondaire de rembourrage des chaînes imprimées avec un espace vide, par exemple:

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

Ajouter trim=TRUE à format ou preserve.width="none" à prettyNum pour éviter cela:

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

Soyez conscient que ceux-ci ont l'effet secondaire de rembourrage des chaînes imprimées avec un espace vide, par exemple: 'prettyNum (c (123 , 1234), big.mark = ",") '; donne '" 123 "" 1,234 "'. ajoutez 'trim = T' à' format' ou 'preserve.width =" none "' à 'prettyNum' pour éviter cela. – MichaelChirico

+0

@MichaelChirico Merci pour les informations supplémentaires. Je l'ai ajouté à la réponse. –

+0

Notez que si vous utilisez également des chiffres pour les décimales, si vous avez un vecteur, cela peut mal tourner si les nombres sont assez différents. De l'aide "Les vecteurs numériques sont codés avec le nombre minimum de décimales nécessaires pour afficher tous les éléments au moins les chiffres significatifs des chiffres.Toutefois, si tous les éléments ont des zéros, le nombre de décimales est réduit jusqu'à nsmall" – micstr

26

Voir ?format:

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

Les autres réponses affichées fonctionne évidemment - mais j'ai toujours utilisé

library(scales)  
comma_format()(1000000) 
+0

La fonction comma_format ne peut traiter que des entiers. –

+3

Il s'agit d'une réponse très tardive, et il était peut-être vrai dans le passé que 'comma_format' ne gérait pas les nombres réels, mais maintenant vous pouvez faire ce qui suit:' scales :: comma_format (digits = 12) (1000000.789) ' résulte ce qui suit: '" 1,000,000.789 "'. – steveb

Questions connexes