web-dev-qa-db-fra.com

Forcer la sortie R à être une notation scientifique avec au plus deux décimales

Je voudrais avoir une sortie cohérente pour un script R particulier. Dans ce cas, je voudrais que toutes les sorties numériques soient en notation scientifique avec exactement deux décimales.

Exemples:

0.05 --> 5.00e-02
0.05671 --> 5.67e-02
0.000000027 --> 2.70e-08

J'ai essayé d'utiliser les options suivantes:

options(scipen = 1)
options(digits = 2)

Cela m'a donné les résultats:

0.05 --> 0.05
0.05671 --> 0.057
0.000000027 --> 2.7e-08

J'ai obtenu les mêmes résultats quand j'ai essayé:

options(scipen = 0)
options(digits = 2)

Merci pour tout conseil.

21
LanneR

Je pense qu'il serait probablement préférable d'utiliser formatC plutôt que de modifier les paramètres globaux.

Pour votre cas, cela pourrait être:

numb <- c(0.05, 0.05671, 0.000000027)
formatC(numb, format = "e", digits = 2)

Quels rendements:

[1] "5.00e-02" "5.67e-02" "2.70e-08"
42
Dave Gruenewald

Une autre option consiste à utiliser la variable scientific de la bibliothèque scales.

library(scales)
numb <- c(0.05, 0.05671, 0.000000027)

# digits = 3 is the default but I am setting it here to be explicit,
# and draw attention to the fact this is different than the formatC
# solution.
scientific(numb, digits = 3)

## [1] "5.00e-02" "5.67e-02" "2.70e-08"

Remarque: digits est défini sur 3, pas 2 comme dans le cas de formatC

1
steveb