r - 如何有效地索引和乘以两个矩阵?

标签 r matrix indexing

我有两个矩阵“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/

相关文章:

r - 带有图像的多个 Kable 表

python - Numpy ndarray 中的成员资格检查

mongodb - 索引 'text' MongoDB - 'text' 不受支持

r - 是否可以从网络图中获取坐标?

r - 避免 R 中的函数名冲突

r - 将具有间隔的单行转换为等于间隔的多行

python - numpy 矩阵乘法 n x m * m x p = n x p

python - Python中矩阵元素的双重求和

c - 交换矩阵中的反对称元素

oracle - 监控所有索引