2013-11-26 53 views
0

矢量乘法我需要一個簡單的矩陣代數或Kronicker產品類型的操作相乘的陣列和R中的載體以獲得一個特定的結果。假設我有這個陣列:陣列 - 中的R

ar<-array(c(rep(1,9),rep(10,9),rep(100,9)),dim=c(3,3,3)) 

和矢量c(1,2,3)。乘以*乘以陣列的每個幻燈片上的每行分別爲1,2和3。但是,我需要一個操作來獲得陣列

ar2<-array(c(rep(1,9),rep(20,9),rep(300,9)),dim=c(3,3,3)) 

改爲。也就是說,有一個簡單的操作,將使用我在上面指定的向量讓我變換arar2?謝謝!

+2

'AR *代表(1:3,每個= 9)'應該工作... – Justin

+0

好了,謝謝,我明白了。更一般地,我們會有'rep(c(1,2,3),each = 9)'。如果你添加這個解決方案,我會投你:) – tomka

回答

2

ar * rep(1:3, each=9)應該工作...

對於任意大小的數組和乘數的任意一組,你知道沿着要執行你的elementwise乘法(在這種情況下你的陣列的尺寸和軸,在z軸):

each_arg <- prod(dim(ar)[1:2]) 
multipliers <- sample(1:10, 3) 
ar2 <- ar * rep(multipliers, each=each_arg) 

您也可以看看tensorA