r语言 - 我如何保存每个打印元素,然后将它们两个两个地连接起来?



在R中,我试图为两个矩阵(AxB)编程Kronecker乘积计算器。我可以得到每个A子指标x所有B矩阵元素的乘积。这就得到了四个矩阵。我需要结合第一个和第二个矩阵,以及第三和第四个矩阵。然后结合这两个矩阵。我怎么能这么做呢?

K = function(A,B){
nfila = nrow(A)*nrow(B)
ncolum = ncol(A)*ncol(B)
m = matrix(NA, nrow = nfila, ncol = ncolum)
for(j in 1:ncol(A)){
for(i in 1:nrow(A)){

s = print(A[j,i]*B)
}
} 
}
A=matrix(1:4, nrow=2, byrow=TRUE)
B=matrix(5:8, nrow=2, byrow=TRUE)
K(A,B)

创建一个列表来存储输出。

K = function(A,B){
res <- vector('list', ncol(A))
for(j in 1:ncol(A)){
s <- vector('list', nrow(A))
for(i in 1:nrow(A)){
s[[i]] = A[j,i]*B
}
res[[j]] <- do.call(cbind, s)
}
do.call(rbind, res)
}
A=matrix(1:4, nrow=2, byrow=TRUE)
B=matrix(5:8, nrow=2, byrow=TRUE)
K(A,B)
#     [,1] [,2] [,3] [,4]
#[1,]    5    6   10   12
#[2,]    7    8   14   16
#[3,]   15   18   20   24
#[4,]   21   24   28   32

这里也可以用lapply

K = function(A,B){
do.call(rbind, lapply(seq(nrow(A)), function(x) 
do.call(cbind, lapply(A[x, ], `*`, B))))
}

相关内容

  • 没有找到相关文章

最新更新