从列表中获取嵌套元素

Getting nested elements from a list

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

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'])
  }
}

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

当我下载内容时,我得到的结构比你复杂得多。对我来说,不是 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"]