2016-03-14 5 views
3

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

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 и т. д. Не уверен, как найти ответ, поскольку я не мог воспроизвести проблему на моей другой машине или на r-скрипке. Проблема сохраняется даже после перезагрузки компьютера.

R версии 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 = С
[5] LC_TIME = German_Germany.1252

+0

Да, я перезапустил R, а также ПК. – Triamus

+2

Какой вывод '.Options $ digits'? – nicola

+0

output .Options $ digits = 2 – Triamus

ответ

9

Вы установите 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 
+3

Ницца поймать там. –