Arrays 三维阵列

Arrays 三维阵列,arrays,r,Arrays,R,我有一个3D阵列-arr dim(arr) [1] 2000 22 3 让我们调用2000 dim1、22 dim2和3 dim3。 我想这样做: for(d1 in 1:dim1){ for(d2 in 1:dim2){ #compute the mean across the 2000 values of arr[d1,d2] m<-mean(arr[d1,d2]) } } 有什么想法吗?我猜你可能想要这个结果: m <

我有一个3D阵列-arr

dim(arr)
[1] 2000   22    3
让我们调用2000 dim1、22 dim2和3 dim3。 我想这样做:

for(d1 in 1:dim1){
    for(d2 in 1:dim2){
        #compute the mean across the 2000 values of arr[d1,d2]
        m<-mean(arr[d1,d2])
    }
}

有什么想法吗?

我猜你可能想要这个结果:

m <- apply(arr, 1:2, mean)

因此,您提出问题的方式有点草率,但您可能会尝试这样做的一个示例是,为三个数组中的每一个取2000 x 22数组的平均值。以下是如何做到这一点:

arr = array(1, dim=c(2000,22,3))
dim(arr)

m = NULL
dim3 = 3
for(d3 in 1:dim3){
    m[d3] = mean(arr[,,d3]) 
}
没关系,我知道了。 这就是我创建3[4 x 6]个矩阵列表的方式:

arr = array(1, dim=c(6,4,3));
l<-list(length=dim(arr)[3]);
for (i in 1:dim(arr)[3]){
    l[[i]]<-arr[,,i];
}

干杯

你在问什么?如何使同样的计算速度更快还是怎样?@Hemmo:很明显,他会在现有的代码中出错。将示例缩小,然后将其用于测试。对arr对象的任何引用都需要在[call.-1,在看了帖子和OP的评论之后,我真的不知道问题是什么。在下面的问答中,你会发现更多的代码用于类似的情况和答案。将这些代码与这个答案一起看可能会有所帮助:我为不清楚而道歉。基本上,没有太多关于R 3D阵列的经验,我的问题是,对于具有以下维度的数组的每个d1维度的每个d2维度,我如何执行类似计算所有d3值的平均值的操作:dimarr[1]d3 d2 d1谢谢。让我尝试进一步澄清它。是否有方法将此数组转换为3[22 X 2000]的列表矩阵?然后我可以在列表上循环并计算每个矩阵行的平均值。谢谢
arr = array(1, dim=c(6,4,3));
l<-list(length=dim(arr)[3]);
for (i in 1:dim(arr)[3]){
    l[[i]]<-arr[,,i];
}