LISTS
中的是一个列表列表。假设它由3个列表组成,每个列表由3个矩阵组成。因此我总共有9个矩阵:
A <- list(matrix(rep(1.1,4),ncol=2),
matrix(rep(1.2,4),ncol=2),
matrix(rep(1.3,4),ncol=2))
B <- list(matrix(rep(2.1,4),ncol=2),
matrix(rep(2.2,4),ncol=2),
matrix(rep(2.3,4),ncol=2))
C <- list(matrix(rep(3.1,4),ncol=2),
matrix(rep(3.2,4),ncol=2),
matrix(rep(3.3,4),ncol=2))
LIST <- list(A,B,C)
我需要做的是创建一个由三个列表组成的新列表。第一个是由较低级别的矩阵A[[1]]
,B[[1]]
,C[[1]]
组成的;第二个是A[[2]]
,B[[2]]
,C[[2]]
,最后一个是A[[3]]
,B[[3]]
,C[[3]]
。
首先,我尝试将单个矩阵与LIST[[1]][[1]]
等隔离开来。这有效,但后来我没有找到一次选择3个矩阵的相关语法。我的意思是(语法错误)是使用类似LIST[(1:3)][[1]]
的东西选择每个列表的第一个矩阵,这显然是错误的......
换句话说,我想知道是否有直接的方法来选择嵌套列表的子集(类似于可以用矩阵或数据帧做的事情)
非常感谢您的帮助!
答案 0 :(得分:1)
也许您只是在[[
内寻找lapply
,但您的问题不是很明确。
例如,要从每个子列表中获取第三个元素:
lapply(LIST, `[[`, 3)
# [[1]]
# [,1] [,2]
# [1,] 1.3 1.3
# [2,] 1.3 1.3
#
# [[2]]
# [,1] [,2]
# [1,] 2.3 2.3
# [2,] 2.3 2.3
#
# [[3]]
# [,1] [,2]
# [1,] 3.3 3.3
# [2,] 3.3 3.3