我正在尝试使用apply()或类似的方法对三个矩阵列表进行矩阵乘法运算。使用R中的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])
但我没有得到我所需要的。请帮忙?
你可以在修正了ZheyuanLi提到的 – akrun
@ZheyuanLi后,用'Map(函数(x,y,z)x%*%y%*%z,l1,l2,l3)'来做到这一点。谢谢你的评论。 – jogo
谢谢李哲源。代码根据您的评论更正。 – useryk