如何在列表中的列表中提取元素,同时保持更高级别的结构

时间:2014-05-15 12:42:21

标签: r list

如果已经回答但是我没有想出要搜索的内容,请提前道歉。

假设您有以下格式的嵌套列表对象:

Ob1 <- list(
   A=vector("list", 5),
   B=vector("list", 5)
)
sub <- c(2,4)

是否有任何非杂乱的方法来创建一个新对象Ob2,其中包含与Ob1相同的嵌套结构,但只有sub索引的A和B元素?理想情况下,这是我喜欢的,可以推广到两个以上的深层次。

非常感谢,Jon

1 个答案:

答案 0 :(得分:3)

这是一种方法:

# Fill the specified list elements with some random values 
# This makes it easier to check that really the right elements have been extracted
Ob1[["A"]][[2]] <- 2
Ob1[["A"]][[4]] <- 4
Ob1[["B"]][[2]] <- 22
Ob1[["B"]][[4]] <- 44

# Extract the specified list elements
new.list <- lapply(Ob1, function(x)x[sub])

# > new.list
# $A
# $A[[1]]
# [1] 2
# 
# $A[[2]]
# [1] 4
# 
# 
# $B
# $B[[1]]
# [1] 22
# 
# $B[[2]]
# [1] 44