【发布时间】:2016-09-28 17:05:44
【问题描述】:
我正在尝试使用 apply() 或类似方法对三个矩阵列表进行矩阵乘法。
以下是示例数据:
mat1 <- matrix(c(1:16), 4, 4, byrow = TRUE)
mat2 <- matrix(c(1:16), 4, 4, byrow = TRUE)
mat3 <- matrix(c(1:16), 4, 4, byrow = TRUE)
l1 <- list(mat1, mat2, mat3)
l2 <- list(mat1, mat2, mat3)
l3 <- list(mat1, mat2, mat3)
对于所有三个列表中的每个对应 [[n]],我想执行以下操作并将它们转储到一个新列表中:
l1[[1]] %*% l2[[1]] %*% l3[[1]]
l1[[2]] %*% l2[[2]] %*% l3[[2]]
l1[[3]] %*% l2[[3]] %*% l3[[3]]
我尝试了以下方法:
mat <- lapply(c(mat1, mat2, mat3), function(x) x[1] %*% x[2] %*% x[3])
但我没有得到我需要的东西。请帮忙?
【问题讨论】:
-
在纠正李哲元提到的内容后,您可以使用
Map(function(x,y,z) x %*% y %*% z, l1, l2, l3)执行此操作