从另一个列表的列表元素开始创建新列表(嵌套列表)

时间:2013-09-27 17:17:10

标签: r list

我的数据集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]]的东西选择每个列表的第一个矩阵,这显然是错误的......

换句话说,我想知道是否有直接的方法来选择嵌套列表的子集(类似于可以用矩阵或数据帧做的事情)

非常感谢您的帮助!

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