我有以下问题:
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)
抱歉,这是一个我不知道的简单问题......
编辑:错误更正
答案 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。