r - 返回遍历列表列表的循环内列表的名称
问题描述
我有两个清单。
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))
}
解决方案
我们循环遍历names
thelist
和print
it
for(nm in names(metalist)) print(nm)
#[1] "bob"
#[1] "carol"
注意
names(metalist)
将给出“金属主义者”names
中每个list
元素的
OP的方法给出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/..
)
lapply(names(metalist), function(nm) metalist[[nm]])
推荐阅读
- selenium - 使用父级和兄弟级的 WebTable 的 Selenium XPath
- google-chrome - 可以使用 X-Frame-Options 嵌入网站的 Chrome 应用程序的替代品:拒绝?
- regex - 正则表达式匹配第 4 个字符后的其余字符串
- php - 无法声明类,因为该名称已在(同一文件)中使用
- json - 与ajv一起使用的json-schema的正确用法是什么?
- c - 在 C 编程中检查用户的验证
- python-3.x - 使用 android 的 qpython3 唤醒局域网
- android - 如何正确设置 ZXingScannerView 的选项?
- r - 尝试在 R 中为 abline 设置范围
- python - 我为我的程序制作了一个注册编码,我将注册的学生数据存储在一个 text.file 中