Forcer R à ne pas utiliser la notation exponentielle (par exemple e + 10)?
-
29-10-2019 - |
Question
Puis-je forcer R à utiliser des nombres réguliers au lieu d'utiliser la notation de type e+10
?J'ai:
1.810032e+09
# and
4
dans le même vecteur et que vous souhaitez voir:
1810032000
# and
4
Je crée une sortie pour un programme à l'ancienne 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
ici.
La solution
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 lors de la décision d'imprimer valeurs numériques en notation fixe ou exponentielle.Positif valorise le biais du fixe et le négatif du scientifique notation: la notation fixe sera préférée à moins qu'elle ne soit plus 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 trouve toujours que c'est fudgeworthy.Le moyen le plus direct est d'utiliser sprintf()
avec une largeur explicite, par ex.sprintf("%.5f", ran2)
.
Autres conseils
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 soucier des paramètres R.
Notez qu'il renvoie une chaîne de caractères plutôt qu'un objet numérique
Insérez options(scipen = 999)
dans votre .Rprofile file pour qu'il soit exécuté automatiquement par défaut .(Ne comptez pas sur le faire manuellement.)
(Ceci dit quelque chose de différent des autres réponses: comment?
- Cela permet de garder les choses saines lorsque vous thunk entre plusieurs projets, plusieurs langues sur une base quotidienne ou mensuelle.N'oubliez pas de taper vos paramètres par projet est sujet aux erreurs et n'est pas évolutif.Vous pouvez avoir un ~ / .Rprofile global ou par projet .Rprofile.Ou les deux, ce dernier remplaçant le premier.
- Conserver toute votre configuration dans un .Rprofile global ou à l'échelle du projet l'exécute automatiquement.Ceci est utile pour par exemplecharges de paquet par défaut, configuration data.table, environnement, etc. Encore une fois, cette configuration peut s'exécuter sur une page de paramètres, et il n'y a aucune chance que vous vous souveniez de ceux-ci et de leur syntaxe et que vous les saisissiez