R返回索引元素

时间:2013-06-05 19:33:31

标签: r

我有一个矩阵:

x<-matrix(c(1,2,3,4,5,6,7,8,9,10),nrow=10,ncol=1)

和索引:

vec<-c(1,4,7,8,9,10)

我想让所有元素都少于下一个索引。所以在给出上面索引向量的上面例子中,我希望看到类似的东西:

1,2,3
4,5,6
7
8
9
10

我目前正在使用for循环:

for(i in 2:length(vec)){
  cat(x[(vec[i-1]):(vec[i]-1)],"\n")

}

这很好用,但它不会返回最后一个元素,10。

有什么想法吗?

有人可以尝试这个例子,我的R会话似乎返回了错误的值:

vec<-c(1,7, 10, 11, 12)
x<- c(251, 272, 291, 314, 333, 355, 377, 397, 420, 440, 462, 483, 503)

谢谢,

3 个答案:

答案 0 :(得分:3)

尝试:

tapply( x,  findInterval( x,  vec) ,'[')

如果你想使用x [vec]作为断点,那么只需使用它作为findInterval的第二个参数。

答案 1 :(得分:0)

试试这个:

lapply(1:length(vec)
   ,function(i){
     min_ix = vec[i]
     max_ix = vec[i+1]
     if(i<length(vec)){x[x<max_ix & x>=min_ix]}
     else{x[x>=min_ix]}
     }
)

答案 2 :(得分:0)

这是一种使用分割和填充vec中间值的方法。如果vec未以length(x)结束预期警告(但结果仍然正确):

split(x, rep(vec, c(diff(vec), 1)))