我想矢量化(或以任何可能的方式优化)以下 3d for循环:
dat:dim = c(n,n,m) 的数组
ref: 矩阵 dim = c(n,m)
for(i in 1:length(dat[,1,1])){
for(k in 1:length(dat[1,1,])){
dat[i,,k][dat[i,,k] > ref[i,k]] <- NA
}
}
我正在使用的数组是7e3
x 7e3
x 2e2
,所以上面的for循环非常昂贵。要启动,我需要执行两个或三个非常相似的操作(在不同的阵列上),因此任何节省的时间都会成倍增加。
示例dat
和ref
数组:
dat <- array(seq(1,75), dim=c(5,5,3))
ref <- cbind(seq(6,10), seq(36,40), seq(61,65))