【问题标题】:Extract specific variable from list从列表中提取特定变量
【发布时间】:2018-12-05 08:24:37
【问题描述】:

如果有人告诉我如何从列表“program 1”中提取“works”列表中的“ID”变量并使用 for 循环将它们转换为数据框,我将不胜感激。

【问题讨论】:

  • 欢迎来到 SO。请不要以图片的形式分享数据,使用dput(your_list_here)并在问题的最后分享输出。
  • R中使用的词是subsetting,你会在谷歌上找到很多结果。
  • program1[[1]][[1]]??

标签: r list loops


【解决方案1】:

我们可以检查列表的结构,然后通过名称或索引访问列表项,例如:

# 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

【讨论】:

  • 感谢您的好意。当我尝试使用您的示例时,我实际上做到了,但它与我的实际数据并不能准确地工作。你能想出另一个解决方案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2018-07-16
相关资源
最近更新 更多