簡體   English   中英

r矩陣逐元素乘積

[英]r matrix product element by element

我有3個矩陣:

 A (n by K), 

 B (L by m) and 

 C (L by K) 

並想產生一個第四矩陣

D (n by m) 

與元素

D(i,j) = sum(B[,i,drop=FALSE]%*%A[j,,drop=FALSE] * C)

(注意,B [,i,drop = FALSE]%*%A [j ,, drop = FALSE]是(L by 1)矩陣與(1 by K_矩陣的乘積,因此是(L by K ),因為C是“和”,將結果矩陣的所有元素相加)

一種實現方法是將網格創建為expand.grid(1:n,1:m)並為每個元素計算D(。,。)。 關於如何在R中更快地執行操作的任何想法?

謝謝!

library(reshape2)
library(plyr)  
m <- 100;n <- 100;K <- 100;L <- 100
A <- matrix(sample(1:n),nrow=n,ncol=K)
B <- matrix(sample(1:L),nrow=L,ncol=m)
C <- matrix(sample(1:L),nrow=L,ncol=K)

h <- ddply(expand.grid(1:m,1:n),.(Var1,Var2),
           f <- function(i) {sum(B[,i$Var1,drop=FALSE]%*%A[i$Var2,,drop=FALSE]*C)})
D <- acast(h, Var2 ~ Var1)

暫無
暫無

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

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