Заставить R не использовать экспоненциальную запись (например, e + 10)? - PullRequest
199 голосов
/ 22 февраля 2012

Могу ли я заставить R использовать обычные числа вместо использования e+10 -подобной записи? У меня есть:

1.810032e+09
# and 
4

в том же векторе и хотите увидеть:

1810032000
# and
4

Я создаю вывод для старомодной программы, и мне нужно написать текстовый файл, используя cat. Пока это прекрасно работает, но я просто не могу использовать нотацию e+10.

Ответы [ 4 ]

195 голосов
/ 22 февраля 2012

Это немного серой области.Вы должны помнить, что R всегда будет вызывать метод печати, и эти методы печати прослушивают некоторые параметры.В том числе «scipen» - штраф за научный показ.От help(options):

'scipen': целое число.Штраф, применяемый при принятии решения о печати числовых значений в фиксированной или экспоненциальной записи.Положительные значения смещены в сторону фиксированных значений, а отрицательные - в сторону научных обозначений: предпочтительнее использовать фиксированные обозначения, если они не превышают цифры «scipen».

Пример:

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

Тем не менее,Я все еще нахожу это выдумкой.Самый ужасный способ - использовать sprintf() с явной шириной.

132 голосов
/ 05 декабря 2014

Этого можно добиться, отключив научную запись в R.

options(scipen = 999)
53 голосов
/ 22 декабря 2017

Мой любимый ответ:

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

Это дает то, что вы хотите, без необходимости копаться в настройках R.

Обратите внимание, что это возвращает символьную строку, а не числовой объект

4 голосов
/ 13 февраля 2018

Поместите options(scipen = 999) в файл .Rprofile , чтобы он автоматически выполнялся по умолчанию .(Не полагайтесь на то, чтобы делать это вручную.)

(Это говорит о чем-то, отличающемся от других ответов: как?

  1. Это сохраняет разум, когда вы работаете между несколькими проектами, несколькими языкамина ежедневной или ежемесячной основе. Не забывайте вводить настройки для каждого проекта, это подвержено ошибкам и не масштабируется. Вы можете иметь глобальный ~ / .Rprofile или для проекта .Rprofile. Или и то и другое, причем последний переопределяет первый.
  2. Хранение всей вашей конфигурации в глобальном или общем проекте .Rprofile автоматически выполняет его. Это полезно, например, для загрузки пакетов по умолчанию, конфигурации data.table, среды и т. Д. Опять же, эта конфигурация может быть запущена на страниценастроек, и есть нулевой шанс, что вы запомните их и их синтаксис и наберете их в
...