Функция R seq дает неправильные результаты

Кажется, что одна из моих машин выдаёт неправильные результаты для функции seq, в то время как другая машина или онлайн-интерпретатор r-fiddle ( http://www.r-fiddle.org/) дают ожидаемые результаты. На рассматриваемой машине происходит следующее:

seq(from = 1, to = 1.1, by = 0.01)
[1] 1.0 1.0 1.0 1.0 1.0 1.0 1.1 1.1 1.1 1.1 1.1

Небольшое изменение команды возвращает ожидаемый результат

seq(from = 0.99, to = 1.1, by = 0.01)
[1] 0.99 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10

Как только я пересекаю порог "1", происходит неправильный результат, например, когда я делаю от = 2,95 до = 3,1 и т. Д. Не уверен, как найти ответ, так как я не смог воспроизвести проблему на другой машине или на р-скрипке. Проблема сохраняется даже после перезагрузки компьютера.

Версия 3.1.3 (2015-03-09)
Платформа: x86_64-w64-mingw32/x64 (64-разрядная версия)
Работает под: Windows 7 x64 (сборка 7601) с пакетом обновления 1

локали:
[1] LC_COLLATE = German_Germany.1252 LC_CTYPE = German_Germany.1252
[3] LC_MONETARY = German_Germany.1252 LC_NUMERIC = C
[5] LC_TIME = German_Germany.1252

1 ответ

Решение

Вы установили digits опция слишком низкая:

options(digits=2)
seq(from = 1, to = 1.1, by = 0.01)
#[1] 1.0 1.0 1.0 1.0 1.0 1.1 1.1 1.1 1.1 1.1 1.1
options(digits=7)
seq(from = 1, to = 1.1, by = 0.01)
#[1] 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10
Другие вопросы по тегам