将变量视为矢量

时间:2014-12-05 13:21:08

标签: r vectorization

v=c(96,94,101,84,99,106,85,98,98,85,95,108,84,98,114,86,97,109,84,95,105,83,97,
  100,81,93,102)

rep1=array(v,dim=c(3,3,3))

u=c(84,95,105,85,97,104,86,90,103,80,93,110,82,99,102,84,95,100,83,92,102,80,96,
  111,79,93,108)

rep2=array(u,dim=c(3,3,3))

rep=rep1+rep2

f=function(x1,x2,x3){
   l=x1
  return(l)

}

 for(i in 1:3){
  for(j in 1:3){
     for(k in 1:3){
     if(f(i,j,k)%%3==1)L=rep[i,j,k]
     }
  }
}

这里L取最后一个满足条件的值。但我希望L将是一个向量,它将采用满足条件的所有值。

1 个答案:

答案 0 :(得分:3)

这是一个基于你的循环的解决方案:

L <- c()
for(i in 1:3){
  for(j in 1:3){
    for(k in 1:3){
      if(f(i,j,k)%%3==1) L <- c(L, rep[i,j,k])
    }
  }
}
# [1] 180 165 167 169 166 163 171 170 160

这是另一个更深奥的:

as.vector( t( rep[ (1:3) %% 3 == 1,,] ) )
# [1] 180 165 167 169 166 163 171 170 160