我有两个列表。
list1 <- list('a', 5, 9)
list2 <- list('q', 42, 51)
它们在较大的命名列表中。
metalist <- list()
metalist[['bob']] <- list1
metalist[['carol']] <- list2
如何从循环中返回每个列表的名称?我想先返回'bob'
,然后再返回'carol'
。以下代码不起作用,因为它在list1
和list2
中查找名称,而不是在list1
中给出metalist
的名称。
for(list in metalist) {
print(names(list))
}
答案 0 :(得分:5)
我们遍历names
和list
的{{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/..