使用嵌套列表作为非向量化函数的输入

时间:2015-07-24 19:29:17

标签: r list lapply

我需要在列表中使用嵌套元素进行查询。例如:

sha_list <- list(c("ed76504696469470dcbf", "164f798524fd6904236a"),
c("669dfeccad88cd4348f7", "af70a76691aacf05c1bb"))

这是一个具有以下结构的列表:

[[1]]
[1] "ed76504696469470dcbf" "164f798524fd6904236a"

[[2]]
[1] "669dfeccad88cd4348f7" "af70a76691aacf05c1bb"

这是我迄今为止所做的尝试:

library("devtools")
lapply(sha_list, source_gist)

这给出了:

Error: length(id) == 1 is not TRUE

预期输出将是列表中两个条目中每个条目中包含两个元素的列表:

[[1]]
[1] gist1
[2] gist2

[[2]]
[1] gist3
[2] gist4

我需要做的是迭代这个列表来执行一个函数(它是非向量化的,因此它一次只能将其中一个元素作为参数)。我希望这会起作用,因为我想递归地使用每个列表中的每个项目:

rapply(sha_list, source_gist, how = "list")

这也不起作用。

unlist()将不起作用,因为我需要维护列表的结构(即输出需要以相同的方式构建,作为列表)。

1 个答案:

答案 0 :(得分:2)

你可以这样做:

library("devtools")
sha_list <- list(c("ed76504696469470dcbf", "164f798524fd6904236a"),
                 c("669dfeccad88cd4348f7", "af70a76691aacf05c1bb"))
my.gists <- lapply(sha_list, function(x) lapply(x, source_gist))

然后,例如,可以使用sha_list[[1]][2]访问与my.gists[[1]][[2]]相关联的要点。