我有一個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