r - 迭代不同的数组维度
问题描述
我是 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"
解决方案
一种解决方案可能是:
abind:::abind(lapply(1:dim(arr2), function(x) arr1[,,x]-arr2[x]), along = 3)