2014-06-24 75 views
1

如何用兩個數組進行基於元素的算術運算,這兩個數組在第一維中是一致的,但也有一個額外的維?如何處理「不符合」的數組?

實施例,通過陣列b乘法陣列a(3×3×2)(3×3):因爲陣列是是非柔順

a <- array(1:18, dim=c(3,3,2)) 
b <- diag(3) 

以下失敗。

> a * b 

對於它的工作,你要投陣列b到一個數組與正確 維數。

> a * array(b, dim=c(3,3,2)) 

這不罷工我是非常簡單的,我敢肯定有一定 是一個簡單的方法。

回答

2

你可以試試:

a * c(b) 

c將剝離的屬性,然後將允許b回收作爲一個簡單的載體,導致我相信這是你想要的結果:

, , 1 

    [,1] [,2] [,3] 
[1,] 1 0 0 
[2,] 0 5 0 
[3,] 0 0 9 

, , 2 

    [,1] [,2] [,3] 
[1,] 10 0 0 
[2,] 0 14 0 
[3,] 0 0 18 
+0

是,這是理想的結果。 –