【问题标题】:Getting nested elements from a list从列表中获取嵌套元素
【发布时间】:2015-10-15 07:46:36
【问题描述】:

我正在尝试从列表中获取嵌套元素。我可以使用:unlist(pull_lists[[i]]$content[[n]]['sha']) 提取元素,但是,我似乎无法将它们插入到嵌套列表中。我在 gist 中提取了列表的单个元素,它在下面创建了可重现的示例。这是我目前所拥有的:

library("devtools")
pull_lists <- list(source_gist("669dfeccad88cd4348f7"))

sha_list <- list()
for (i in length(pull_lists)){
  for (n in length(pull_lists[[i]]$content)){
  sha_list[i][n] <- unlist(pull_lists[[i]]$content[[n]]['sha'])
  }
}

如何以嵌套方式插入元素?

【问题讨论】:

  • 一个紧迫的问题length(pull_lists[[i]]$content) == 0

标签: r list data-manipulation


【解决方案1】:

当我下载内容时,我得到的结构比你做的要复杂得多。对我来说,不是pull_lists[[i]]$content,而是pull_lists[[i]]$value$content[[1 or 2]]$parents$sha。什么都没有填充的原因是因为那里没有任何东西可以填充(即 n = 0)。

我之前不得不处理类似的数据结构。我发现,在取消列出之后搜索命名结构比找出正确的子集序列要容易得多。

这是一个例子:

sha_locations <- grep("sha$",names(unlist(pull_list[[1]])))
unlist(pull_list[[1]])[sha_locations] 

稍微清理一下 for 循环,如下所示:

sha_list <- lapply(
   pull_list, 
   function(x) unlist(x)[grep("sha$",names(unlist(x)))]
)

由于存在多个 SHA,并且该问题仅询问特定位置的 SHA,因此您需要提取这些 SHA:

sha_list <- sha_list[[1]][attr(sha_list[[1]], "names")=="value.content.sha"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2023-02-04
    • 2022-10-05
    • 2014-01-23
    • 1970-01-01
    相关资源
    最近更新 更多