我想修改一个数组但是有逐个元素的条件。这就是我想要做的事情
{{1}}
有更有效的方法吗? 感谢
答案 0 :(得分:2)
有两种方法可以简化这种双循环
选项1:
vector <- runif(18, 0,1)
xx <- array(vector, dim=c(2,3,3))
xx[,,1][xx[,,1]<.5] = 1
xx[,,2][xx[,,2]<.4] = 1.5
xx[,,3][xx[,,3]<.2] = 2
但是,您仍然必须为每个条件写一行。
第二种方法是使用lapply,但在这种情况下你必须创建三个向量:index,threshhold,substitution
idx = 1:3
thr = c(.5, .4, .2)
sb = c(1, 1.5, 2)
lapply(idx, function(k){
xx[,,k][ xx[,,k]< thr[x] ] <<- sb[k]
})