如果有人告诉我如何从“程序1”列表中提取“工作”列表中的“ ID”变量并将其通过for循环转换为数据帧,我将不胜感激。
答案 0 :(得分:0)
我们可以检查列表的结构,然后按名称或索引访问列表项,例如:
# example input
program1 <- list(list(id = 1, x = 3, works = list(1:3, list(ID = 11, 1:3, 4:6))),
list(id = 2, x = 4, works = list(4:6, list(ID = 22, 1:3, 4:6))))
# by index
program1[[ 1 ]][[ 3 ]][[ 2 ]][[ 1 ]]
# [1] 11
# by name
program1[[1]][["works"]][[ 2 ]][["ID"]]
# [1] 11
如果我们使用的是RStudio,则有一个便捷的点击选项可以从列表中获取项目:
这将在控制台中提供以下代码:
program1[[1]][["works"]][[2]][["ID"]]
最后,从您的示例来看,我们似乎要从所有875个列表项中提取所有ID,然后使用:
# get all IDs
sapply(program1, function(i) i[[ "works" ]][[ 2 ]][[ "ID"]])
# [1] 11 22