Как я могу вставить 100000 без сокращения на 1e + 05?
Вопрос. Как я могу использовать paste
без 100000
, становясь 1e+05
?
Извините, если этот вопрос кажется фривольным (но это привело к ошибке в моем коде). Я использую R для вызова внешнего script, поэтому, когда я говорю, например. paste("abc",100000)
Я хочу, чтобы он выводил "abc 100000"
, а не "abc 1e+05"
.
Вот пример того, как он выглядит на моем экране:
> paste("abc",100000)
[1] "abc 1e+05"
> paste("abc",100001)
[1] "abc 100001"
Это приводит к странному поведению, которое мой script работает для ввода "100001", но не "100000".
Я понимаю, что могу создать script для преобразования чисел в строки, но мне нравится, но я чувствую, что не должен делать этого, если есть внутренний способ сделать то же самое (я подозреваю, что есть какой-то "метод", Мне не хватает).
[Если это помогает, я на Ubuntu 12.04.1 LTS ( "точный" ), запуская R версию 2.14.1 (2011-12-22) в терминале.]
Ответы
Ответ 1
См. ?options
, особенно scipen
:
R> paste("abc", 100000)
[1] "abc 1e+05"
R> options("scipen"=10) # set high penalty for scientific display
R> paste("abc", 100000)
[1] "abc 100000"
R>
В качестве альтернативы можно легко форматировать форматирование старой школы через sprintf()
:
R> sprintf("%s %6d", "abc", 100000)
[1] "abc 100000"
R>
Ответ 2
В качестве альтернативы вы можете использовать целые числа, которые не печатаются в научной нотации. Вы можете указать, что ваш номер является целым числом, помещая за ним "L" или делая as.integer.
> paste("abc",100000L)
[1] "abc 100000"
> paste("abc",as.integer(1000000000))
[1] "abc 1000000000"
Ответ 3
В качестве альтернативы format
может быть проще, чем sprintf
, особенно если вы хотите изменить отображение десятичных знаков:
> paste("abc",format(100000, scientific = FALSE))
[1] "abc 100000"
> paste("abc",format(0.1234567, scientific = FALSE, digits = 4))
[1] "abc 0.1235"