【发布时间】:2020-09-14 18:15:31
【问题描述】:
假设我的数据具有以下结构:
A_matrix<-list(structure(c(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), .Dim = c(3L, 3L, 3L)), structure(c(1,
0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0), .Dim = c(3L, 3L, 3L)))
As<-list(structure(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -1, -2, -3, -4,
-5, -6, -7, -8, 0, -1, -2, -3, -4, -5, -6, -7, -8), .Dim = c(3L,
3L, 3L)), structure(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4,
5, 6, 7, 8, 9, 0, -1, -2, -3, -4, -5, -6, -7, -8), .Dim = c(3L,
3L, 3L)))
如您所见,A_matrix 和 As 是包含数组的列表。我想做的操作如下:
for (i in 1:length(A_matrix)) {
A_matrix[[i]][, , 2] <- A_matrix[[i]][, , 1] %*% As[[i]][, , 1]
}
但是,for 效率不高,因为我的真实数据是一个包含 2800 个数组大小(3470、30、30)的列表,我想使用 lapply 以提高效率。所以我认为以下代码可以运行:
lapply(1:length(As), function(index)
A_matrix[[index]][, ,2]<-A_matrix[[index]][, , 1] %*% As[[index]][,,1])
但不是,我摔倒了,因为这段代码没有替换每个数组的第二个矩阵。有人可以帮我吗?
【问题讨论】: