返回遍历列表列表的循环内列表的名称

时间:2019-02-01 11:44:35

标签: r list loops

我有两个列表。

list1 <- list('a', 5, 9)
list2 <- list('q', 42, 51)

它们在较大的命名列表中。

metalist <- list()
metalist[['bob']] <- list1
metalist[['carol']] <- list2

如何从循环中返回每个列表的名称?我想先返回'bob',然后再返回'carol'。以下代码不起作用,因为它在list1list2中查找名称,而不是在list1中给出metalist的名称。

for(list in metalist) {
  print(names(list))
}

1 个答案:

答案 0 :(得分:5)

我们遍历nameslist的{​​{1}}

print

请注意

for(nm in names(metalist)) print(nm)
#[1] "bob"
#[1] "carol"

将给出“金属主义者”中每个names(metalist) 元素的names


OP给出list的原因是因为当我们将NULL元素提取到其组件中时

list

但是,如果未完全提取。也就是说,如果它仍然是具有一个元素的metalist[[1]] #[[1]] #[1] "a" #[[2]] #[1] 5 #[[3]] #[1] 9 对象

list

换句话说,metalist[1] #$bob #$bob[[1]] #[1] "a" #$bob[[2]] #[1] 5 #$bob[[3]] #[1] 9 names(metalist[1]) #[1] "bob" 属性只是names之外的一层。因此,除非它通过list循环,否则我们无法从内部提取。

通过names循环,可以使用names提取成分

[[

应用族函数(for(nm in names(metalist)) print(metalist[[nm]]) )是处理list的便捷选择

lapply/sapply/..