dig*_*vee 0 r list matrix matrix-multiplication
我有一个矩阵列表。我需要将它们相乘。通常,如果我们有矩阵A和B,并且需要在R中进行矩阵乘法,则使用
A*B
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我似乎无法使lapply起作用。如果我的矩阵列表称为l1,而我使用lapply(l1,*),则会出现错误;如果我使用lapply(l1,prod),它将给出每个矩阵内所有元素的乘积。
例:
> l1
[[1]]
[,1] [,2]
[1,] 2 5
[2,] 3 7
[[2]]
[,1] [,2]
[1,] 3 7
[2,] 5 9
[[3]]
[,1] [,2]
[1,] 5 8
[2,] 1 2
Run Code Online (Sandbox Code Playgroud)
所需的输出:
l1
[,1] [,2]
[,1] 30 280
[,2] 15 126
Run Code Online (Sandbox Code Playgroud)
lapply遍历向量/列表,但是它只能迭代地将一个元素传递给函数。如果您想将元素迭代传递给二进制函数(例如,用于标量计算累积乘积),则可以使用Reduce:
Reduce("*", 1:3) == prod(1:3)
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)
与您的清单:
l1 <- list(matrix(c(2,3,5,7),2),
matrix(c(3,5,7,9),2),
matrix(c(5,1,8,2),2))
Reduce("*", l1)
# [,1] [,2]
#[1,] 30 280
#[2,] 15 126
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |