R:两个不同大小的数组的乘法

时间:2016-11-29 12:23:47

标签: arrays r multiplication

我想将两个数组A和B相乘(仅由于大小而显示的代码)

"folder_exclude_patterns":
[
    "node_modules/*/**"
]

我希望将数组B的第一个表乘以表A的第1行,将数组B的第二个表乘以数组A的第2行,依此类推。我只是无法弄清楚如何在以列也适合的方式进行乘法时这样做(例如ALPHA:ALPHA,BETA:BETA,等等......)

通过使用扫描,我得到18个表,但表没有乘以列。相反,似乎列乘以行。 (表1/18)如下所示。

a <- array(c(1:72), dim=c(18,4))
dimnames(a) = list(c(1:18),
                   c("ALPHA", "BETA", "GAMMA", "DELTA"))

b <- array(c(1:360), dim=c(5,4,18)) 
dimnames(b) = list(c("ONE", "TWO" ,"THREE", "FOUR", "FIVE"),
                   c("ALPHA", "BETA", "GAMMA", "DELTA"),
                   c(1:18))

相反,我需要这个(也只是显示的第一个表):

sweep(b, MARGIN=2, a, "*")


      ALPHA BETA GAMMA DELTA
ONE       1   12    33    64
TWO      10   42    84   136
THREE    27   80   143   216
FOUR     52  126   210   304
FIVE     85  180   285   400

1 个答案:

答案 0 :(得分:1)

这样的事情能做到吗?

number=dim(a)[1]    
lapply(1:number,function(x){t(apply(b[,,x],1,function(z){z*a[x,]}))})

    [[1]]
          ALPHA BETA GAMMA DELTA
    ONE       1  114   407   880
    TWO       2  133   444   935
    THREE     3  152   481   990
    FOUR      4  171   518  1045
    FIVE      5  190   555  1100