我想将两个数组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
答案 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