我正在嘗試使用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