2016-10-06 188 views
1

與此相關的問題:Multiply multidimensional array with same-sized matrixr使用陣列輸出尺寸

如果創建以下數組和矩陣:

a <- array(1, dim=c(2,2,3)) 
b <- matrix(c(1,1,1,1), nrow=2) 

並想CARRAY出b的元素單元的乘法用的a每個切片沿着第三維移動,我會使用apply。然而,我得到以下奇怪的結果:

> dim(apply(a, 3, `*`, b)) 
[1] 4 3 
> newa <- array(0, dim=c(2,2,3)) 
> newa[] <- apply(a, 3, `*`, b) 
> dim(newa) 
[1] 2 2 3 

爲什麼這兩件事給出不同的答案?

回答

0

所得的apply(a, 3, * , b)尺寸4 3因爲根據文檔,請參閱?apply

如果每次調用FUN返回長度n的向量,然後apply返回如果n > 1的尺寸c(n, dim(X)[MARGIN])的陣列。

在這種情況下,每次調用FUN返回長度4的向量,並用MARGIN=33尺寸。請注意,applyFUN的每次調用的結果被強制爲vector而非matrix

現在,使用newa[] <- array(...,您將用array計算中的值替換newa對象中的值。 newa的屬性沒有改變,所以它的尺寸仍然是2 2 3

希望這會有所幫助。