【发布时间】:2019-11-23 15:55:17
【问题描述】:
我有多个列表,如下所示:我在将这些列表转换为 R 中的数据框时遇到问题
我在 R 中编写了一些代码将列表转换为数据帧,但给出了错误的数据帧
### the first list
b1
[[1]]
[1] "math"
[[2]]
[1] "write"
[[3]]
[1] 0.6439442
[[4]]
[1] 0.2939780 0.8416635
[[5]]
2.5% 97.5%
0.5517048 0.7156524
## second list
b2
[[1]]
[1] "math"
[[2]]
[1] "read"
[[3]]
[1] 0.663126
[[4]]
[1] 0.3242639 0.8511580
[[5]]
2.5% 97.5%
0.5716105 0.7384209
3 third list
b3
[[1]]
[1] "science"
[[2]]
[1] "write"
[[3]]
[1] 0.5812035
[[4]]
[1] 0.1995946 0.8097306
[[5]]
2.5% 97.5%
0.4791782 0.6721795
像这样有更多 100 个列表,我正在尝试将它们转换为数据框。
为此,我编写了一个代码来将多个列表转换为 R 中的 Data Frame
已将所有列表合并为一个列表,便于在数据框中转换
list_full <- list(b1,b2,b2,b4)
f1 <- lapply(list_full,function(x){
max.length<-max(sapply(x, length))
data.frame(sapply(x, function(v) {c(v, rep(NA, max.length-length(v)))}), stringsAsFactors = FALSE)
})
library(dplyr)
j<-bind_rows(f1, .id = 'ID')
我们执行我得到错误数据帧的代码,如下所示,其中第二个值存储在分隔行中。看了就知道了
ID X1 x2 x3 x4 x5
1 1 math write 0.64394 0.2939780 0.55170476
2 1 NA NA NA 0.841663 0.7156523
3 2 math read 0.6631 0.324263 0.57161
4 2 NA NA NA 0.851157 0.7384209
5 3 math read 0.6631 0.3242 0.5716104
6 3 NA NA NA 0.85115 0.7384
7 4 science read 0.644 0.2963 0.552
8 4 NA NA NA 0.842 0.72
这是我目前面临的问题,所以请提供更好的代码来解决这个问题
最终的数据框应如下所示:
x1 x2 x3 x4 x5
math wirte 0.643 (0.29, 0.84) (0.55, 0.72)
math read 0.66 (0.32 0.851) (0.57 0.74)
science write 0.581 (0.19 0.80) (0.47 0.67)
【问题讨论】:
标签: r list dataframe type-conversion