我有一个像这样的矩阵:
我想对单行的每个值求和,但加权。
示例:给定一个特定的行,总和将是:
S = x1 * loan + x2 * mortdue + x3 * value + ...
x1, x2, x3, ...
是预定义的值。
我尝试了rowSums()
之类的东西,但是我还没弄清楚如何正确地做到这一点。
答案 0 :(得分:3)
您正在寻找矩阵向量乘法。例如,如果您有一个矩阵:
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
,这就是你所谓的&#34;思考&#34;:
x <- round(rnorm(3), 1)
#[1] 2.4 0.8 -0.8
你可以做到
drop(A %*% x)
#[1] 4.88 -0.16 1.92
drop
只是将结果单列矩阵转换为1D向量。
您可以快速检查一下,看看这是您想要的:
sum(A[1, ] * x)
#[1] 4.88
sum(A[2, ] * x)
#[1] -0.16
sum(A[3, ] * x)
#[1] 1.92
与rowSums()
相比,您还可以将此类计算视为&#34;加权rowSums&#34;。
目前,您似乎更有可能拥有数据框而不是矩阵。您可以通过as.matrix()
将此数据框转换为矩阵。