Puis-je forcer R à utiliser des nombres normaux au lieu d'utiliser la notation semblable à e+10
-? J'ai:
1.810032e+09
# and
4
dans le même vecteur et que vous voulez voir:
1810032000
# and
4
Je crée une sortie pour un programme ancien et je dois écrire un fichier texte en utilisant cat
. Cela fonctionne bien jusqu'à présent, mais je ne peux tout simplement pas utiliser la notation e+10
.
C'est un peu une zone grise. Vous devez vous rappeler que R invoquera toujours une méthode d'impression et que ces méthodes d'impression écoutent certaines options. Y compris "scipen" - une pénalité pour l'affichage scientifique. De help(options)
:
‘Scipen’: entier. Une pénalité à appliquer pour décider d’imprimer valeurs numériques en notation fixe ou exponentielle. Positif les valeurs biaisent vers fixe et négatif envers scientifique notation: la notation fixe sera préférée à moins qu'il ne s'agisse de plus de que "scipen" chiffres plus larges.
Exemple:
R> ran2 <- c(1.810032e+09, 4)
R> options("scipen"=-100, "digits"=4)
R> ran2
[1] 1.81e+09 4.00e+00
R> options("scipen"=100, "digits"=4)
R> ran2
[1] 1810032000 4
Cela dit, je le trouve toujours fudgeworthy. Le moyen le plus difficile est d'utiliser sprintf()
avec une largeur explicite.
Cela peut être réalisé en désactivant la notation scientifique dans R.
options(scipen = 999)
Ma réponse préférée:
format(1810032000, scientific = FALSE)
# [1] "1810032000"
Cela donne ce que vous voulez sans avoir à vous tromper dans les réglages R.
Notez qu'il renvoie une chaîne de caractères plutôt qu'un objet numérique
Mettez options(scipen = 999)
dans votre fichier .Rprofile afin qu'il soit auto-exécuté par défaut. (Ne comptez pas sur le faire manuellement.)
(Cela dit quelque chose de différent des autres réponses: comment?