我的列表很长(> 100k),并且需要迭代遍历每个列表并提取“ id”-我可以通过在for循环中构造lapply
来轻松做到这一点。
以下是列表的示例:
l1 <- list(id="002e2b45555652749339ab9c34359fb6", key="2", value="xx")
l2 <- list(id="002e2b433226527493jsab9c34353fb6", key="4", value="zz")
l3 <- list(list1, list2)
我做循环:
for(i in 1:20) {
lapply(l3$id[[i]][1], function (x) print(x))
}
基本上打印id的每个列表的所有元素-很好。 我最终想用行中的所有“ id”构造一个矩阵/数据框。令我感到烦恼的是,循环中的打印效果很好,可以打印出所有列表中的所有ID-尽管我无法将行绑定到数据框或矩阵等。我正在尝试类似的操作-并没有做我想要的事情(尽管未收到错误等)
for(i in 1:20) {
lapply(l3$id[[i]][1], function (x) rbind(x))
}
因此,所需的输出应该是(最好是一个数据帧)。
[1] "002e2b45555652749339ab9c3400cc52"
[1] "002e2b45555652749339ab9c34040525"
答案 0 :(得分:2)
如果您想要ID的向量,则可以
sapply(l3, "[[", "id")
或使用tidyverse函数
purrr::map_chr(l3, "id")
R中不需要像这样的东西循环。
答案 1 :(得分:1)
使用基数R:
binary()
如果您只需要ID的
s=aggregate(.~ind,stack(setNames(l3,1:length(l3))),identity)
ind values.1 values.2 values.3
1 1 002e2b45555652749339ab9c34359fb6 2 xx
2 2 002e2b433226527493jsab9c34353fb6 4 zz