矩阵的加权行求和

3

我有一个像这样的矩阵:

我想加权求和单行中的每个值。

例如:给定特定的一行,求和应为:

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

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

我尝试使用rowSums()和类似的东西,但我还没有弄清楚如何正确地做到这一点。

1个回答

4
您正在寻找矩阵向量乘法。例如,如果您有一个矩阵:
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,这就是你所说的“ponderation”:

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()相比,你也可以将这种计算看作是“加权行求和”。
目前看来,你可能拥有的是数据框而非矩阵。你可以通过as.matrix()将此数据框转换为矩阵。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接