J'ai un nombre, par exemple 1.128347132904321674821 que je voudrais montrer comme seulement deux décimales lors de la sortie sur écran (ou écrit dans un fichier). Comment fait-on cela?
x <- 1.128347132904321674821
ÉDITER:
L'utilisation de:
options(digits=2)
A été suggéré comme réponse possible. Existe-t-il un moyen de spécifier cela dans un script pour une utilisation unique? Quand je l'ajoute à mon script, cela ne semble pas faire quelque chose de différent et je ne suis pas intéressé par beaucoup de retaper pour formater chaque nombre (j'automatise un très gros rapport).
-
Réponse: rond (x, chiffres = 2)
r
formatting
rounding
r-faq
Brandon Bertelsen
la source
la source
controls the number of digits to print when printing numeric values. It is a suggestion only. Valid values are 1...22 with default 7. See the note in print.default about values greater than 15.
à partir des options, il n'effectue que la sortie.round(23, digits=2)
cela s'imprimera23
et non23.00
. Si vous voulez ce dernier, essayez stackoverflow.com/a/12135122/180892Réponses:
Contexte: Quelques suggestions de réponses sur cette page (par exemple
signif
,options(digits=...)
) ne garantit pas qu'un certain nombre de décimales sont affichées pour un nombre arbitraire. Je suppose que c'est une caractéristique de conception de R dans laquelle les bonnes pratiques scientifiques impliquent d'afficher un certain nombre de chiffres sur la base des principes des " chiffres significatifs ". Cependant, dans de nombreux domaines (par exemple, style APA , rapports commerciaux), les exigences de formatage imposent l'affichage d'un certain nombre de décimales. Cela se fait souvent à des fins de cohérence et de normalisation plutôt que de se préoccuper de chiffres importants.Solution :
Le code suivant montre exactement deux décimales pour le nombre
x
.Par exemple:
Une fonction plus générale est la suivante: où
x
est le nombre etk
le nombre de décimales à afficher.trimws
supprime tout premier espace blanc qui peut être utile si vous avez un vecteur de nombres.Par exemple,
la source
0.0001
comme0.00
format()
etprettyNum()
transforment les chiffres en caractères. Comment aborderiez-vous cela?format(c(10, 1), nsmall=1)
rendements"10.0" " 1.0"
(notez l'espace de tête devant le 1.0. Alors que lasprintf()
fonction semble garantir un formatage plus agréable sur des deux côtés de la décimale, par exemple,sprintf(c(10,1), fmt = '%#.1f')
se débarrasse de cet espace ennuyeux et revient"10.0" "1.0"
.format
est utilisé dans une colonne.Vous pouvez formater un nombre, disons
x
, jusqu'à la décimale comme vous le souhaitez. Voicix
un nombre avec de nombreuses décimales. Supposons que nous souhaitons afficher jusqu'à 8 décimales de ce nombre:Ici
format="f"
donne des nombres flottants dans les décimales habituelles disons, xxx.xxx, etdigits
spécifie le nombre de chiffres. En revanche, si vous vouliez afficher un entier, vous l'utiliseriezformat="d"
(un peu commesprintf
).la source
formatC
c'est presque exclusivement ce que j'utilise à cette fin. Je pense que cette réponse est bonne et se trouve dans la base R selon la demande du PO.Vous pouvez essayer mon package formatable .
La bonne chose est,
x
est toujours un vecteur numérique et vous pouvez faire plus de calculs avec le même formatage.Encore mieux, les chiffres ne sont pas perdus, vous pouvez reformater avec plus de chiffres à tout moment :)
la source
pour 2 décimales en supposant que vous souhaitez conserver les zéros de fin
qui donne
Comme @mpag le mentionne ci-dessous, il semble que R puisse parfois donner des valeurs inattendues avec cela et la méthode ronde, par exemple sprintf (5.5550, fmt = '% #. 2f') donne 5.55, pas 5.56
la source
Quelque chose comme ca :
Option de définition des chiffres:
la source
digits
option ne semble pas définir le nombre de chiffres après la décimale. Par exemple, lorsque je définis des options (chiffres = 2), l'impression de 7,25 entraîne une sortie de 7,2, 1234,25 devient 1234 et 0,25 reste 0,25. Y a-t-il une autre option interagissant avec cela?Vérifiez les fonctions prettyNum, format
pour avoir des zéros d'essai (123.1240 par exemple) utiliser
sprintf(x, fmt='%#.4g')
la source
sprintf
, c'est essentiellement un cadre de formatagefmt
argument, désolé!g
votre réponse soit pour les chiffres fixes, en utilisantf
mieux les travaux.Si vous préférez des chiffres significatifs à des chiffres fixes, la commande signif peut être utile:
la source
Error: could not find function "fixed"
signif
fonctionne pour le nombre spécifique fourni, mais je suppose que le problème commun appliqué est lorsque vous devez afficher exactement deux décimales mais que vous ne savez pas quel est le nombre à l'avance. Dans ce cas,signif
donnera différents nombres de décimales en fonction du nombre réel.La fonction
formatC()
peut être utilisée pour formater un nombre à deux décimales. Deux décimales sont données par cette fonction même lorsque les valeurs résultantes incluent des zéros de fin.la source
J'utilise cette variante pour forcer l'impression K décimales:
la source
Notez que les objets numériques dans R sont stockés avec une double précision , ce qui vous donne (environ) 16 chiffres décimaux de précision - le reste sera du bruit. J'accorde que le nombre indiqué ci-dessus est probablement juste pour un exemple, mais il est long de 22 chiffres.
la source
Il me semble que ce serait quelque chose comme
Par une petite aide en ligne .
la source
format.default(x, digits = 2)
juste un cliché dans le noir en vous basant sur le lien fourni. Cette information est un peu ce qui manque à ce que je lis normalement pour la documentation, je m'attendais à voir également les sorties imprimées.si vous voulez simplement arrondir un nombre ou une liste, utilisez simplement
Ensuite, les données seront arrondies à la deuxième décimale.
la source