使用表达式形成索引的R子集矢量

时间:2016-09-12 06:24:58

标签: 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 个答案:

答案 0 :(得分: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)