Sie suchen nach einer Matrix-Vektor-Multiplikation. Wenn Sie eine Matrix zum Beispiel haben:
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
Und haben Sie einen anderen Vektor x
, das ist das, was man "Ponderation" genannt:
x <- round(rnorm(3), 1)
#[1] 2.4 0.8 -0.8
Sie tun können
drop(A %*% x)
#[1] 4.88 -0.16 1.92
Die drop
konvertieren Sie einfach das Ergebnis einspaltigen Matrix in einen 1D-Vektor.
Sie können eine schnelle Überprüfung, um zu sehen haben das ist, was Sie wollen:
sum(A[1, ] * x)
#[1] 4.88
sum(A[2, ] * x)
#[1] -0.16
sum(A[3, ] * x)
#[1] 1.92
Im Vergleich mit rowSums()
, können Sie auch eine solche Berechnung als „gewichtete rowSums“ denken kann.
Im Moment scheint es wahrscheinlicher, dass Sie einen Datenrahmen als eine Matrix haben. Sie können diesen Datenrahmen durch as.matrix()
in eine Matrix umwandeln.