Могу ли я заставить R использовать обычные цифры вместо использования e+10
-like нотации? Я имею:
1.810032e+09
# and
4
в пределах одного и того же вектора и хотите увидеть:
1810032000
# and
4
Я создаю вывод для старомодной программы, и мне приходится писать текстовый файл с помощью cat
. Пока все работает нормально, но я просто не могу использовать нотацию e+10
.
Это немного серая область. Вам нужно вспомнить, что R всегда вызывается методом печати, и эти методы печати прослушивают некоторые параметры. Включая "scipen" - штраф за научный показ. От help(options)
:
'scipen: integer. Штраф, который должен применяться при принятии решения о печати числовые значения в фиксированной или экспоненциальной нотации. положительный смещения ценностей к фиксированным и отрицательным к научным Обозначение: фиксированная нотация будет предпочтительнее, если она больше чем "более широкие цифры".
Пример:
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()
с явной шириной.
Это может быть достигнуто путем отключения научной нотации в R.
options(scipen = 999)
Мой любимый ответ:
format(1810032000, scientific = FALSE)
# [1] "1810032000"
Это дает то, что вы хотите, без необходимости гадать в настройках R.
Обратите внимание, что он возвращает строку символов, а не числовой объект
Вставьте options(scipen = 999)
в файл .Rprofile, чтобы он автоматически выполнялся по умолчанию. (Не полагайтесь на это вручную).
(Это говорит что-то другое, чем другие ответы: как?
options(scipen=x)
где x - число десятичных знаков, которые вы хотите отобразить