我有一个3D阵列 - ARRR三大维阵列
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])
}
}
任何想法?
我有一个3D阵列 - ARRR三大维阵列
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])
}
}
任何想法?
所以你的问题提出的方式是有点草率,但的一个例子是什么你可能试图做的是取其中每3个的每个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个[22 X 2000]矩阵的列表?然后,我可以遍历列表并计算每个矩阵行的均值。谢谢 – user1701545 2013-02-27 21:52:27
我猜你可能希望这样的结果:
m <- apply(arr, 1:2, mean)
您当前的代码将在每一个内部循环覆盖米,你最终会得到一个值,它也将抛出一个尺寸不匹配错误当它遇到arr[d1,d2]
。如果您想要使用for-loop策略,则需要将m
定义为dim1 x dim2矩阵,然后使用m[d1,d2] <- mean(arr[d1, d2, ])
填充其条目。
接下来的时间,如果你想避免所有这些downvotes的,为什么不显示一些测试用的小例子中的物体:
arr <- array(1:5*4*3, c(5,4,3))
在下面的问答中,您可以找到更多关于类似情况和答案的代码。将这段代码与这个答案一起看看可能会有所帮助:http://stackoverflow.com/questions/13475039/how-to-optimize-the-following-code-with-nested-while-loop-multicore-an-选项 – Jochem 2013-02-27 21:27:51
我很抱歉不清楚。基本上,对R 3D阵列没有太多经验,我的问题是如何执行类似于计算所有d3值的均值的操作,对于具有这些维度的数组的每个d1维度的每个d2维度:dim(arr) [ 1] d3 d2 d1 – user1701545 2013-02-27 21:35:20
没关系,我明白了。 这就是我会创造的3名单[4×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];
}
欢呼
什么你问?如何更快地做出相同的计算? – 2013-02-27 21:04:42
@Hemmo:他显然会在代码中看到错误。让示例变小,然后用它进行测试。任何对'arr'对象的引用在“[”调用中都需要有两个逗号。 – 2013-02-27 21:05:35
(-1),在看了帖子和OP的评论之后,我真的不知道问题是什么。 – QkuCeHBH 2013-02-27 23:56:21