web-dev-qa-db-fra.com

Forcer R à ne pas utiliser la notation exponentielle (p. Ex. E + 10)?

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.

176
Matt Bannert

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.

180
Dirk Eddelbuettel

Cela peut être réalisé en désactivant la notation scientifique dans R.

options(scipen = 999)
119
GingerJack

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

42
Danny

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?

  1. Cela garde les choses saines quand vous pensez entre plusieurs projets, plusieurs langues sur une base quotidienne ou mensuelle. N'oubliez pas de saisir vos paramètres par projet est sujet aux erreurs et non évolutif. Vous pouvez avoir un fichier .Rprofile global ~/.Ref ou par projet. Ou les deux, le dernier l'emportant sur le premier.
  2. Conserver toute votre configuration dans un fichier .Rprofile global ou global du projet l'exécute automatiquement. Ceci est utile pour par exemple Paquets par défaut, configuration de data.table, environnement, etc. Encore une fois, cette configuration peut être exécutée sur une page de paramètres et il n'y a aucune chance que vous reteniez ceux-ci et leur syntaxe et que vous les tapiez
0
smci