Непоследовательное поведение: оператора - PullRequest
2 голосов
/ 03 мая 2019

Я пытался создать последовательность нечетных значений, используя оператор : (как в Octave), когда столкнулся со странным поведением.

Я пробовал ту же операцию с разными значениями.

> 1:2:10
 [1]  1  2  3  4  5  6  7  8  9 10
Warning message:
In 1:2:10 : numerical expression has 2 elements: only the first used
> 1:0.2:10
 [1]  1  2  3  4  5  6  7  8  9 10
> 1:0.5:10
 [1]  1  2  3  4  5  6  7  8  9 10
> 1:0.9:10
 [1]  1  2  3  4  5  6  7  8  9 10
> 1:1.9:10
 [1]  1  2  3  4  5  6  7  8  9 10
> 1:2.9:10
 [1]  1  2  3  4  5  6  7  8  9 10
Warning message:
In 1:2.9:10 : numerical expression has 2 elements: only the first used
> 1:3.9:10
 [1]  1  2  3  4  5  6  7  8  9 10
Warning message:
In 1:3.9:10 : numerical expression has 3 elements: only the first used

Я не понимаю разницу. Я хотел бы знать, почему иногда я получаю предупреждение, а иногда нет, и разницу в предупреждающих сообщениях. Я знаю, что должен использовать seq, чтобы получить нечетные значения, которые я хотел, но это противоречивое поведение озадачивает меня.

1 Ответ

6 голосов
/ 03 мая 2019

Когда вы делаете

1:1.9

, результат равен

# 1

, поэтому 1:1.9:10 совпадает с 1:10.

Но когда вы звоните

1:2

вы получаете

# 1 2

Следовательно, 1:2:10 - это то же самое, что и вызов

c(1, 2):10 # which gives 1:10 see warning
# [1]  1  2  3  4  5  6  7  8  9 10
#Warning message:
#In c(1, 2):10 : numerical expression has 2 elements: only the first used

Со страницы справки:

Аргументы

от: начальное значение последовательности.

до: (максимальное) конечное значение последовательности.

...

Значение до будет включено, если оно будет отличаться от от целым числом до числового значения около 1e-7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...