Почему список [1: длина (список) -1] в порядке, а список [1 длина (список) -2] неправильный? - PullRequest
0 голосов
/ 20 сентября 2018

a - вектор строки.Я получаю сообщение об ошибке, если я использую что-то кроме -1, чтобы попытаться получить значения из списка.Использование:

 a[1:(length(a)-2)]

решило проблему.

a[1:length(a)]
[1] "ADE"    "DEZ"    "dfeefe"
a[1:length(a)-1]
[1] "ADE" "DEZ"
> a[1:length(a)-2]                                                                                                    Error in a[1:length(a) - 2] : 
only 0's may be mixed with negative subscripts

Почему это неправильно?

1 Ответ

0 голосов
/ 20 сентября 2018

Ваша проблема связана с приоритетом оператора.: имеет более высокий приоритет, чем -.

a[1:length(a)-2] означает a[(1:length(a))-2] вместо того, что вы предполагали a[1:(length(a)-2)]

В вашем случае a имеет длину 3,в этом случае 1:length(a) - это вектор 1 2 3, а 1:length(a) - 2 - это вектор -1 0 1.

Кроме того, даже если a[1:length(a)-1] сработал, он не сработал так, как вы думаете.Вы вычислили a[0:2] (с первым индексом 0 просто игнорируемым), а не просто a[1:2].

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