2016-09-12 3 views
-5

Я столкнулся с чем-то, что удивило меня в подмножестве в R. У меня есть вектор восходящих значений и вы хотите использовать только те значения, которые находятся близко к середине. Итак, мне просто нужно было что-то вроде этого:R подмножество векторов с использованием выражения для формирования индексов

x <- 1:10 
m <- 5 
x[(m-1):(m+1)] 

, который возвращает средние 3 значения (это то, что я хотел). Но по ошибке я использовал:

x[m-1:m+1] 

К моему удивлению, вектор 5, 4, 3, 2, 1 был возвращен. Может кто-то, пожалуйста, помогите мне понять, как R интерпретирует это?

+1

'? Синтаксис' Читайте об операторе Синтаксис и приоритет. – zx8754

ответ

1

Это скорее о приоритете оператора. x [m-1: m + 1] интерпретируется как x [m- (1: m) +1] (и не как x [(m-1) :(m + 1)]) или x [m + 1 - (1: m)], который в вашем случае равен x [c (5,4,3,2,1)], начиная с 6 - (1: 5) = rep (6,5) - (1: 5).

+0

Спасибо, песок! –

+0

Вы больше всего любите kb ' –