R:通过向量乘法的矩阵

时间:2011-11-08 03:45:53

标签: r matrix

我有以下问题:

myvec <- c(1:3)

mymat <- as.matrix(cbind(a = 6:15, b = 16:25, c= 26:35))
mymat
       a  b  c
 [1,]  6 16 26
 [2,]  7 17 27
 [3,]  8 18 28
 [4,]  9 19 29
 [5,] 10 20 30
 [6,] 11 21 31
 [7,] 12 22 32
 [8,] 13 23 33
 [9,] 14 24 34
[10,] 15 25 35

我想将mymat与myvec相乘并构造新的向量

sum(6*1, 16*2, 26*3) 
sum(7*1, 17*2, 27*3)

....................
sum(15*1, 25*2, 35*3)

抱歉,这是一个我不知道的简单问题......

编辑:错误更正

4 个答案:

答案 0 :(得分:39)

R中的%*%运算符执行矩阵乘法:

> mymat %*% myvec
      [,1]
 [1,]  116
 [2,]  122
 ...
[10,]  170

答案 1 :(得分:2)

如果您想要矢量结果而不是矩阵结果作为输出,您也可以使用..

apply(mymat*myvec,1,sum)

比Owen更多的迂回解决方案,但它确实有效。

答案 2 :(得分:0)

矩阵是列主要顺序的向量:

 colSums(  t(mymat) * myvec )  

(希望这次正确地阅读问题后编辑。)

答案 3 :(得分:0)

另一种方法,但更长的方式可以是这个:

rowSums(t(apply(mymat, 1, function(x) myvec*x)),na.rm=T)

我找到的唯一方法是忽略矩阵内的NA。