Существует два способа упростить этот двойной цикл.
Вариант 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, но в этом случае вам нужно создать три вектора: индекс, порог, замещение
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]
})