首页 > 解决方案 > 迭代不同的数组维度

问题描述

我是 R 的新手,我知道,如果可能的话,最好使用内置函数而不是 for 循环和其他类似的东西。所以我想知道他们是否是一种使用“apply()”或其他功能的方式来执行以下循环。

arr1 <- array(data=rnorm(255,0,1),dim=list(5,5,9))
arr2 <- array(data=apply(arr1,3,function(x)mean(x)),dim=list(9))
var <- array(dim=list(5,5,9))

for(i in 1:9){
    var[,,i] <- arr1[,,i]-arr2[i]
}

谢谢

"""""Edit"""" 我更改代码以使其按照建议运行,并更改 "var"

标签: r

解决方案


一种解决方案可能是:

abind:::abind(lapply(1:dim(arr2), function(x) arr1[,,x]-arr2[x]), along = 3)

推荐阅读