Конвертировать список с вложенными списками разной длины и пустыми элементами в фрейм данных в R - PullRequest
0 голосов
/ 26 апреля 2018

Я хотел бы преобразовать следующий список в фрейм данных.

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 голосов
/ 26 апреля 2018
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   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...