如何使这个表达更小更漂亮?

时间:2016-09-22 13:00:15

标签: r

是否可以在R:

中压缩此表达式
for(j in 1:dim(data)[3]) data[,,j] <- f(data[,,j])

data变量是3D数组,f接受并返回2D矩阵。我需要在每个&#34;矩阵&#34;上调用f矩阵数组(事实上,data是存储为颜色通道数组的图像,我从加载图像和f处理单通道的函数中得到它 - 因此,使用替代表示法是不可行的,我只需要优化这段代码。)

1 个答案:

答案 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