簡體   English   中英

矩陣的加權行總和

[英]Weighted rowSums of a matrix

我有一個像這樣的矩陣:

我想對單個行的每個值求和,但進行加權。

示例:給定特定行,總和為:

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

x1, x2, x3, ...是預定義值。

我嘗試了rowSums()事情,但是我一直無法弄清楚如何正確地做到這一點。

您正在尋找矩陣向量乘法。 例如,如果您有一個矩陣:

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僅將結果單列矩陣轉換為1D向量。

您可以快速查看一下這是您想要的:

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()將此數據幀轉換為矩陣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM