gpt4 book ai didi

r - 列明智 [R] 矩阵乘法

转载 作者:行者123 更新时间:2023-12-04 09:42:52 24 4
gpt4 key购买 nike

注意:我不是指 here 中的矩阵乘法- 即使在另一篇文章中讨论了转置的扭曲。

我有这两个矩阵...

矩阵 A :

A <- matrix(c(1,1,1,-1,1,1,1,-1,1,-1,-1,1), ncol=4)
[,1] [,2] [,3] [,4]
[1,] 1 -1 1 -1
[2,] 1 1 -1 -1
[3,] 1 1 1 1

...和矩阵 B :
B <- matrix(c(1,2,3,2,1,3,2,3,1), ncol=3)
[,1] [,2] [,3]
[1,] 1 2 2
[2,] 2 1 3
[3,] 3 3 1

我想得到 [R] 代码:
       [,1]    [,2]    [,3] 
[1,] 1*1 1*2 1*2
[2,] 1*2 1*1 1*3
[3,] 1*3 1*3 1*1

[,1] [,2] [,3]
[1,] -1*1 -1*2 -1*2
[2,] 1*2 1*1 1*3
[3,] 1*3 1*3 1*1

[,1] [,2] [,3]
[1,] 1*1 1*2 1*2
[2,] -1*2 -1*1 -1*3
[3,] 1*3 1*3 1*1

[,1] [,2] [,3]
[1,] -1*1 -1*2 -1*2
[2,] -1*2 -1*1 -1*3
[3,] 1*3 1*3 1*1

这不是线性代数乘法,因为乘法结束时没有和。它不是 Kronecker 的产品。我试过 apply(A, 2, function(x) A * B但它不起作用,因为虽然我可以指定我想要 A 的列一次一个,我不知道如何对 B 的列做同样的事情.

我没有将任何特定类型的对象(列表、矩阵、数组)设置为输出。

问题是:如何将这两个矩阵按元素和按列相乘以得到另一个矩阵或“列表”对象或数组?

最佳答案

您可以尝试以下操作:

> lapply(as.data.frame(A), `*`, B)
$V1
[,1] [,2] [,3]
[1,] 1 2 2
[2,] 2 1 3
[3,] 3 3 1

$V2
[,1] [,2] [,3]
[1,] -1 -2 -2
[2,] 2 1 3
[3,] 3 3 1

$V3
[,1] [,2] [,3]
[1,] 1 2 2
[2,] -2 -1 -3
[3,] 3 3 1

$V4
[,1] [,2] [,3]
[1,] -1 -2 -2
[2,] -2 -1 -3
[3,] 3 3 1

关于下面评论中的后续问题,如果您的最终目标是每个子矩阵的列总和,您可以通过以下方式实现:
> lapply(as.data.frame(A), function(x) colSums(x * B))
$V1
[1] 6 6 6

$V2
[1] 4 2 2

$V3
[1] 2 4 0

$V4
[1] 0 0 -4

关于r - 列明智 [R] 矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33657834/

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