我有两个矩阵“A”、“B”和一个数据框“C”。他们是
A <- matrix(1:10, nrow = 2)
colnames(A) <- letters[1:5]
B <- matrix(11:16, nrow = 2)
colnames(B) <- letters[6:8]
C <- data.frame(ix1 = c("a", "d"), ix2 = c("f", "h"))
我想创建一个长度为 2 和值的向量“vec”
vec[1] = A[,"a"] %*% B[,"f"]
vec[2] = A[,"d"] %*% B[,"h"]
这可以通过
for
轻松完成。循环,但是当“A”、“B”和“C”的大小增长时,它很耗时。如何有效地做到这一点?
最佳答案
您可以按如下方式进行矢量化,但我不确定转置 A
的成本有多高
(vec <- diag(crossprod(A[, as.character(C$ix1)], B[, as.character(C$ix2)])))
## [1] 35 233
关于r - 如何有效地索引和乘以两个矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29692880/