Forcer R à ne pas utiliser la notation exponentielle (par exemple e+10)?

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 voulez 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 là-bas.

165
demandé sur Scarabee 2012-02-22 19:24:33

4 réponses

C'est un peu une zone grise. Vous devez vous rappeler que R appellera toujours une méthode d'impression et que ces méthodes d'impression écouteront certaines options. Y compris "scipen" -- une pénalité pour l'affichage scientifique. De help(options):

‘scipen’: entier. Une pénalité à appliquer au moment de décider d'imprimer valeurs numériques en notation Fixe ou exponentielle. Positif valeurs biais vers fixe et négatif vers scientifique notation: la notation Fixe sera préférée sauf qu'il est plus que les chiffres "scipen" 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 cela fudgeworthy. Le moyen le plus difficile est d'utiliser sprintf() avec une largeur explicite.

170
répondu Dirk Eddelbuettel 2012-02-22 15:33:21

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

options(scipen = 999)
103
répondu GingerJack 2015-10-30 17:15:41

Ma réponse préférée:

format(1810032000, scientific = FALSE)
# [1] "1810032000"

Cela donne ce que vous voulez sans avoir à muck sur les paramètres R.

Notez qu'il renvoie une chaîne de caractères plutôt qu'un objet numérique

34
répondu Danny 2018-03-26 21:43:51

Mettre options(scipen = 999) dans votre .Fichier Rprofile donc il est 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 permet de garder les choses saines lorsque vous pensez entre plusieurs projets, plusieurs langues sur une base quotidienne ou mensuelle. Se souvenir de taper vos paramètres par projet est sujet aux erreurs et non évolutif. Vous pouvez avoir un global ~/.Rprofile ou par projet .Rprofile. Ou les deux, avec le dernier remplaçant l'ancien.
  2. garder toutes vos config dans un projet à l'échelle ou globale .Rprofile l'exécute automatiquement. Ceci est utile pour par exemple les charges de paquets par défaut, les données.configuration de la 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 tapiez dans
-1
répondu smci 2018-03-27 08:30:46