2016-09-21 44 views
7

Chciałbym mieć spójne dane wyjściowe dla określonego skryptu R. W tym przypadku chciałbym, aby wszystkie dane liczbowe były zapisane w notacji naukowej z dokładnie dwoma miejscami po przecinku.Wymuszenie wyjścia R jako notacji naukowej z najwyżej dwoma miejscami po przecinku

Przykłady:

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

Próbowałem przy użyciu następujących opcji:

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

To dało mi wyniki:

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

uzyskałem takie same wyniki, gdy próbowałem:

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

Dziękuję za radę.

+1

Byłaś prawie tam: 'opcji (cyfry = 3, scipen = -2)'. Usunąłem to jako odpowiedź, ponieważ nie wiem, czy masz naprawdę duże liczby - to nie zadziała. Byłoby lepiej, gdyby ktoś inny wiedział o tym naprawdę wszechstronny sposób na różne typy liczb, ale w szczyptę i jeśli masz tylko małe liczby, zrobi to. – HFBrowning

Odpowiedz

15

Myślę, że najlepiej byłoby użyć formatC zamiast zmieniać ustawienia globalne.

Twoim przypadku, może to być:

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

co daje:

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