Различия в индексации вектора между использованием длины и последовательности - PullRequest
2 голосов
/ 02 октября 2019

Я настраиваю векторные данные и хочу извлечь их часть.

Я попробовал два метода, как показано ниже. Я думал, что они должны иметь одинаковый результат, но результаты разные. Почему?

data1<- c( 1, 2, 3, 4, 5 )

data1[ length( data1 ) - 2 : length( data1 ) ]    
# ; [1] 3 2 1

data1[ 3 : 5 ]    
# ; 3 4 5

1 Ответ

1 голос
/ 02 октября 2019

Из-за приоритета оператора (отметьте ?Syntax - унарный -, + выше оператора последовательности :), оберните его с () для оценки как блока

data1[(length(data1)-2):length(data1)]
#[1] 3 4 5

length( data1 ) - 2 : length( data1 )
#[1] 3 2 1 0

(length( data1 ) - 2) : length( data1 )
#[1] 3 4 5
...