Мы перебираем names
из list
и print
it
for(nm in names(metalist)) print(nm)
#[1] "bob"
#[1] "carol"
Обратите внимание, что
names(metalist)
даст names
каждого list
элемент в 'metalist'
Причина, по которой метод 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]])