gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 20:35:40 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com