【发布时间】:2015-07-30 19:10:28
【问题描述】:
如果我有数组
> (arr = array(c(1,1,2,2), c(2,2,2)))
, , 1
[,1] [,2]
[1,] 1 2
[2,] 1 2
, , 2
[,1] [,2]
[1,] 1 2
[2,] 1 2
那么我如何将列向量(例如 c(3,3))应用于每个矩阵的每一行并将它们相加?所以本质上,我需要做 4 * c(1,2) %*% c(3,3)。这里可以使用apply函数吗?
【问题讨论】:
-
你需要一个数组还是也可以使用一个列表?
-
当然,我也可以使用列表。
-
@nongkrong 嗯,我不认为这总是有效的。
-
@nongkrong 我可以,它会产生一个 2x1 向量,然后我可以对结果向量的元素求和以获得我想要的。但是我会得到两个 2x1 向量,我需要对所有向量的分量求和才能得到答案。这有意义吗?
-
会
a1 <- apply(arr, c(1,3), sum);sum(mapply('%*%', arr, a1))这个工作