r - R - 通过列表迭代循环并创建一个数据框
问题描述
我有一长串列表(> 100k),需要迭代循环遍历每个列表并提取“id”——我可以通过lapply
在 for 循环中构建来轻松完成。
以下是列表的示例:
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"
解决方案
如果你想要一个 ID 向量,你可以这样做
sapply(l3, "[[", "id")
或使用 tidyverse 函数
purrr::map_chr(l3, "id")
在 R 中不需要循环这样的东西。
推荐阅读
- asp.net-core - 将 SignalR 服务添加为单例,然后将 redis 添加到其中
- vuetify.js - nuxt vuetify 谷歌字体
- codeigniter - 使用 Codeigniter 购物车库时购物车显示 0 件商品
- wso2 - WSO2 API 集群上 HAProxy 负载均衡器上的 SSL 握手失败
- c# - 无法将字符串转换为 Int32
- python - 选择特定列
- c# - 数据表没有被填充?
- typo3 - Typo3 8.7:在 powermail (7.1.0) 中设置/修改删除链接
- rest - 我无法使用 Sencha 执行 REST 请求
- javascript - .Trim 在尝试从返回的数据中删除空间时不是函数错误