2012-02-22 14 views
144

Czy mogę zmusić R do używania zwykłych liczb zamiast używania notacji e+10? Mam:Siła R, aby nie używać wykładniczej notacji (np. E + 10)?

1.810032e+09 
# and 
4 

w tym samym wektorze i chcesz zobaczyć:

1810032000 
# and 
4 

tworzę wyjście na starej programu i muszę napisać plik tekstowy za pomocą cat. To działa dobrze, ale nie mogę po prostu zapisać tam notacji e+10.

+0

Powiązane: http://stackoverflow.com/q/3978266/134830 –

Odpowiedz

153

To trochę szara strefa. Musisz pamiętać, że R zawsze wywoła metodę drukowania, a te metody drukowania wysłuchają niektórych opcji. W tym "scipen" - kara za wyświetlanie naukowe. Od help(options):

'scipen': liczba całkowita. Kara, którą należy zastosować przy podejmowaniu decyzji o drukowaniu wartości numerycznych w notacji stałej lub wykładniczej. Wartości dodatnie odchylania wartości w kierunku ustalonym i ujemnym w kierunku naukowym notacja: preferowany zapis będzie preferowany, chyba że jest bardziej niż "powiększony" cyfry szerzej.

Przykład:

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 

Powiedział, że nadal go znaleźć fudgeworthy. Najgorszym sposobem jest użycie sprintf() z jawną szerokością.

+1

Dzięki. scipen wydaje się być opcją, której szukałem. Upiorne wyjaśnienie kary sprawiło, że się cofnąłem. Ale twój przykład ładnie to wyjaśnia. sprintf, hę? Czy mówisz o kłopotach z sprintf tydzień temu? :) –

+1

W rstudio, jeśli zaimportujesz zestaw danych i zrobisz train_sample_10k = format (train_sample_10k, scientific = FALSE) i przeładujesz, zmieni on zapisy naukowe. – mixdev

+0

Problem z tą metodą powoduje, że wszystkie zmienne "char' ... – pyll

92

To można osiągnąć poprzez wyłączenie notacji naukowej w R.

options(scipen = 999) 
+0

Co więcej, można to umieścić w pliku [.Rprofile] (https: //csgillespie.gitub. io/efficientR/3-3-r-startup.html # rprofile), więc domyślnie jest wykonywany automatycznie. – smci

11

Moja ulubiona odpowiedź:

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

Daje to, co chcesz, bez konieczności syf o w ustawieniach R.

-1

Umieść options(scipen = 999) w swoim , więc domyślnie zostanie automatycznie wykonany.

(Czym różni się to od innych odpowiedzi? Zachowywanie całej konfiguracji w globalnym lub globalnym .Rprofile automatycznie wykonuje ją.To jest przydatne dla np. Domyślne ładowanie pakietów, konfiguracja data.table, środowisko itp.)

+0

Dlaczego dokładnie ta sama odpowiedź? https://stackoverflow.com/a/27318351/680068 Poza bitem Rprofile, może lepiej edytuj odpowiedź GingerJacka? – zx8754

+0

@ zx8754: to nie jest dokładnie ta sama odpowiedź: kluczowym punktem jest przeniesienie tych rzeczy do twojego .Rprofile. Wtedy nigdy nie zapomnisz tego. Z czasem twój .Rprofile gromadzi wszystkie twoje dostosowania. – smci

+0

Do ciebie oczywiście, ale Q nie jest "jak nie mogę zapomnieć zrobić X", ale "jak mogę zrobić X". – zx8754

Powiązane problemy