从列表中提取特定变量

时间:2018-12-05 08:24:37

标签: r list loops

如果有人告诉我如何从“程序1”列表中提取“工作”列表中的“ ID”变量并将其通过for循环转换为数据帧,我将不胜感激。

the list looks like this

1 个答案:

答案 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,则有一个便捷的点击选项可以从列表中获取项目:

enter image description here

这将在控制台中提供以下代码:

program1[[1]][["works"]][[2]][["ID"]]

最后,从您的示例来看,我们似乎要从所有875个列表项中提取所有ID,然后使用:

# get all IDs
sapply(program1, function(i) i[[ "works" ]][[ 2 ]][[ "ID"]])
# [1] 11 22