矩阵

2016-10-03 63 views
1

的加权rowSums我有这样一个矩阵:矩阵

我想总结单行,但权重的每一个值。

实施例:给定一个特定的行,则总和将是:

S = x1 * loan + x2 * mortdue + x3 * value + ... 

x1, x2, x3, ...是预定义的值。

我试过rowSums()和类似的东西,但我一直没能弄清楚如何正确地做到这一点。

回答

2

您正在寻找矩阵向量乘法。举例来说,如果你有一个矩阵:

set.seed(0) 
A <- matrix(round(rnorm(9), 1), 3) 
#  [,1] [,2] [,3] 
#[1,] 1.3 1.3 -0.9 
#[2,] -0.3 0.4 -0.3 
#[3,] 1.3 -1.5 0.0 

而且你有另一个向量x,这就是你所谓的 “思考”:

x <- round(rnorm(3), 1) 
#[1] 2.4 0.8 -0.8 

你可以做

drop(A %*% x) 
#[1] 4.88 -0.16 1.92 

drop只是将结果单列矩阵转换为一维向量。

你可以有一个快速检查,看看这是你想要的东西:

sum(A[1, ] * x) 
#[1] 4.88 

sum(A[2, ] * x) 
#[1] -0.16 

sum(A[3, ] * x) 
#[1] 1.92 

rowSums()相比,你也可以认为这样的计算为“加权rowSums”。


此刻,您似乎更有可能拥有数据框而不是矩阵。您可以通过as.matrix()将此数据帧转换为矩阵。