r - 将列表值存储在具有不相等行的 data.frame 中
问题描述
我正在尝试通过从列表中提取值来创建数据框。我有一个 157 列表,其中包含不相等的值,如图所示
我想要的是 rbind 一个数据框中的所有列表值。我试图通过 for 循环来做到这一点,但它只存储了第一个列表值。
我能做的是:
porturn1=data.table::rbindlist(lapply(porturn[1], as.data.frame), idcol = "id")
porturn2=data.table::rbindlist(lapply(porturn[2], as.data.frame), idcol = "id")
porturn3=data.table::rbindlist(lapply(porturn[3], as.data.frame), idcol = "id")
porturn4=data.table::rbindlist(lapply(porturn[4], as.data.frame), idcol = "id")
porturn5=data.table::rbindlist(lapply(porturn[5], as.data.frame), idcol = "id")
然后将rbind.fill
命令应用于所有这些数据,但这似乎很麻烦且不切实际。虽然之后的结果rbind.fill
是我想要的,如图所示:
如何创建一个循环来创建所需的数据框(如上图所示,我需要存储 157 个列表值或 157 行)?
解决方案
您可以使用 运行do.call
,rbind.fill
它适用rbind.fill
于 a 的各个条目list
并将结果组合在一起,在本例中为 a data.frame
。
library(plyr)
## make test data
set.seed(0)
porturn <- sapply(sample(1:20, 10), function(x) 1:x)
str(porturn)
#> List of 10
#> $ : int [1:18] 1 2 3 4 5 6 7 8 9 10 ...
#> $ : int [1:6] 1 2 3 4 5 6
#> $ : int [1:7] 1 2 3 4 5 6 7
#> $ : int [1:10] 1 2 3 4 5 6 7 8 9 10
#> $ : int [1:15] 1 2 3 4 5 6 7 8 9 10 ...
#> $ : int [1:4] 1 2 3 4
#> $ : int [1:13] 1 2 3 4 5 6 7 8 9 10 ...
#> $ : int [1:14] 1 2 3 4 5 6 7 8 9 10 ...
#> $ : int [1:8] 1 2 3 4 5 6 7 8
#> $ : int [1:20] 1 2 3 4 5 6 7 8 9 10 ...
## work
porturnall = do.call(rbind.fill,lapply(porturn, function(x) as.data.frame(t(x))))
print(porturnall)
#> V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
#> 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 NA NA
#> 2 1 2 3 4 5 6 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> 3 1 2 3 4 5 6 7 NA NA NA NA NA NA NA NA NA NA NA NA NA
#> 4 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA NA NA NA NA NA
#> 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 NA NA NA NA NA
#> 6 1 2 3 4 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
#> 7 1 2 3 4 5 6 7 8 9 10 11 12 13 NA NA NA NA NA NA NA
#> 8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 NA NA NA NA NA NA
#> 9 1 2 3 4 5 6 7 8 NA NA NA NA NA NA NA NA NA NA NA NA
#> 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
## Created on 2018-07-21 by the reprex package (v0.2.0).
推荐阅读
- vue.js - 循环内的 Vuetify 文本字段在一次输入后失去焦点
- r - 为什么 neo4r 无法创建连接对象?
- html - 启用实时数据搜索时,引导选择下拉对齐中断
- java - 如何解决recyclerview中的重复数据
- java - 如何使用适配器位置将数据从 firebase 检索到新活动
- javascript - 尝试隐藏元素并在单击按钮时将其回调
- python - 范围内浮点值的numpy数组
- python - 如何将文件上传到动态创建的 Django 模型?
- spring-mongodb - 如何在spring boot项目中添加mongodb副本集
- javascript - Javascript过滤器/查找功能是四舍五入的数字