是否可以在R:
中压缩此表达式for(j in 1:dim(data)[3]) data[,,j] <- f(data[,,j])
data
变量是3D数组,f
接受并返回2D矩阵。我需要在每个&#34;矩阵&#34;上调用f
矩阵数组(事实上,data
是存储为颜色通道数组的图像,我从加载图像和f
处理单通道的函数中得到它 - 因此,使用替代表示法是不可行的,我只需要优化这段代码。)
答案 0 :(得分:3)
试试这个:
a[] <- apply(a, 3, f)
或者如果你不想覆盖a
:
replace(a, TRUE, apply(a, 3, f))
例如,
f <- function(x) mean(x) * x^0
a <- array(1:24, 2:4)
aa <- replace(a, TRUE, apply(a, 3, f))
for(i in 1:4) a[,,i] <- f(a[,,i])
identical(a, aa)
# [1] TRUE