Wymusić, aby R nie używał notacji wykładniczej (np. e+10)?

Czy Mogę wymusić na R używanie zwykłych liczb zamiast używania notacji e+10? Mam:

1.810032e+09
# and 
4

W obrębie tego samego wektora i chcesz zobaczyć:

1810032000
# and
4

Tworzę wyjście dla staromodnego programu i muszę napisać plik tekstowy za pomocą cat. Na razie działa dobrze, ale po prostu nie mogę tam użyć notacji e+10.

Author: Scarabee, 2012-02-22

4 answers

To trochę szara strefa. Należy pamiętać, że R zawsze wywoła metodę drukowania, a te metody drukowania nasłuchują niektórych opcji. Łącznie z "scipen" - kara za pokaz naukowy. From help(options):

'scipen': liczba całkowita. Kara stosowana przy podejmowaniu decyzji o druku wartości liczbowe w notacji stałej lub wykładniczej. Pozytywna wartości nastawienie wobec stałych i negatywnych wobec naukowych notacja: preferowana będzie stała notacja chyba, że jest bardziej niż "scipen" cyfry szersze.

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
To powiedziawszy, nadal uważam to za godne uwagi. Najbardziej tragicznym sposobem jest użycie sprintf() z jawną szerokością.
 170
Author: Dirk Eddelbuettel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-22 15:33:21

Można to osiągnąć poprzez wyłączenie notacji naukowej w R.

options(scipen = 999)
 103
Author: GingerJack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-30 17:15:41

Moja ulubiona odpowiedź:

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

To daje to, co chcesz, bez konieczności błaznowania w Ustawieniach R.

Zauważ, że zwraca łańcuch znaków zamiast obiektu number

 34
Author: Danny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-26 21:43:51

Put options(scipen = 999) w Twoim .Plik Rprofile , więc domyślnie jest wykonywany automatycznie . (Nie polegaj na robieniu tego ręcznie.)

(to mówi coś innego niż inne odpowiedzi: jak?

  1. to utrzymuje rzeczy po zdrowych zmysłach, gdy myślisz między wieloma projektami, wieloma językami na co dzień lub co miesiąc. Zapamiętywanie wpisywania ustawień poszczególnych projektów jest podatne na błędy i nie jest skalowalne. Możesz mieć globalny~/.Rprofile lub per-project .Rprofile. Lub jedno i drugie, z drugie zastępuje pierwsze.
  2. przechowywanie wszystkich konfiguracji w całym projekcie lub na całym świecie .RPROFILE automatycznie go wykonuje. Jest to przydatne np. dla domyślnych obciążeń pakietów, danych.konfiguracja tabeli, środowisko itp. Ponownie, ten config może uruchomić się na stronie ustawień, a nie ma szans, że zapamiętasz te i ich składnię i wpisz je w
 -1
Author: smci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-27 08:30:46