条件替换数组中的值

时间:2018-05-10 13:12:42

标签: r

我想修改一个数组但是有逐个元素的条件。这就是我想要做的事情

{{1}}

有更有效的方法吗? 感谢

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]
  })