首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将列表对象的列表转换为R中的数据帧

将列表对象的列表转换为R中的数据帧
EN

Stack Overflow用户
提问于 2018-06-10 03:08:15
回答 3查看 27.7K关注 0票数 7

我有一个清单,如下所示。ANd我想把它转换成所需格式的数据帧。

myList:

代码语言:javascript
复制
[[1]]
NULL

[[2]]
[[2]]$`file`
[1] "ABC"

[[2]]$New
[1] 21

[[2]]$Old
[1] 42


[[3]]
[[3]]$`file`
[1] "CDF"

[[3]]$NEW
[1] 206

[[3]]$Old
[1] 84

我想将这个list对象列表转换为所需格式的dataframe:

代码语言:javascript
复制
file   New   Old
ABC    21     42
CDF    206    84

提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-10 03:50:34

类似于(ls是你的列表):

代码语言:javascript
复制
df <- data.frame(matrix(unlist(ls), ncol = max(lengths(ls)), byrow = TRUE))

如果列名很重要,那么

代码语言:javascript
复制
names(df) <- names(ls[[which(lengths(ls)>0)[1]]])
票数 7
EN

Stack Overflow用户

发布于 2018-06-10 03:33:37

我们可以在转换为tibble之后使用map_df

代码语言:javascript
复制
library(tidyverse)
myList %>% 
   map_df(as_tibble)
# A tibble: 2 x 3
#  file    New   Old
#  <chr> <dbl> <dbl>
#1 ABC      21    42
#2 CDF     206    84

或使用bind_rows

代码语言:javascript
复制
bind_rows(myList)
# A tibble: 2 x 3
#  file    New   Old
#  <chr> <dbl> <dbl>
#1 ABC      21    42
#2 CDF     206    84

数据

代码语言:javascript
复制
myList <- list(NULL, list(file = 'ABC', New = 21, Old = 42), 
                      list(file = 'CDF', New = 206, Old = 84))
票数 16
EN

Stack Overflow用户

发布于 2018-06-10 03:16:57

看起来下面的方法是可行的。

代码语言:javascript
复制
do.call(rbind, lapply(list, as.data.frame))

其中list是您的列表。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50777607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档