将具有不同长度和空元素的嵌套列表的列表转换为R中的数据帧

时间:2018-04-26 19:30:14

标签: r list dataframe

我想将以下列表转换为数据帧。

test <- list(list("a",c("b","c","d"),character(0)),list("j",c("r","s"),character(0)),list("h",character(0),"i"))

我尝试了以下内容:

df.test <- do.call(rbind,Map(data.frame, V1=sapply(test, "[[", 1),V2=sapply(test, "[[", 2),V3=sapply(test, "[[", 3)))

但是这不适用于包含字符(0)的嵌套列表。令人满意的输出看起来像这样:

     V1  V2  V3
  1  a   b   NA
  2  a   c   NA
  3  a   d   NA
  4  j   r   NA
  5  j   s   NA
  6  h   NA  i

非常感谢提前。

1 个答案:

答案 0 :(得分:3)

library(tidyverse)
test %>% 
  map_df(~.x %>% 
           map(~if(length(.)) . else NA) %>% 
           do.call(what = cbind) %>% 
           as_tibble) 

给出

  V1    V2    V3   
  <chr> <chr> <chr>
1 a     b     NA   
2 a     c     NA   
3 a     d     NA   
4 j     r     NA   
5 j     s     NA   
6 h     NA    i