преобразование списка в фрейм данных в R без потери корневого узла - PullRequest
2 голосов
/ 11 октября 2019

Есть список для преобразования во фрейм данных, но я теряю столбец корневого узла:

my_list <- list(usdol = list(name = "Dollar", native = "US dollar"), dmk = list(name = "Mark", 
    native = "Deutsch Mark"))


> my_list
$usdol
$usdol$name
[1] "Dollar"

$usdol$native
[1] "US dollar"


$dmk
$dmk$name
[1] "Mark"

$dmk$native
[1] "Deutsch Mark"

Преобразование в фрейм данных таким образом с использованием qdapTools (list2df)

 my_list %>% list2df()

Dollar          usdol           
US dollar       usdol           
Mark             dmk            
Deutsch Mark    dmk

Желаемый результат:

code  name  secondary_name

usdol Dollar US dollar
dmk    Mark  Deutsch Mark

1 Ответ

1 голос
/ 11 октября 2019

Вот один вариант с unnest_wider из tidyr

library(tibble)
library(tidyr)
tibble(col = my_list) %>%
      unnest_wider(col) %>%
      mutate(code = names(my_list))%>% 
      select(code, name, secondary_name = native)
# A tibble: 2 x 3
#  code  name   secondary_name
#   <chr> <chr>  <chr>         
#1 usdol Dollar US dollar     
#2 dmk   Mark   Deutsch Mark  

или с использованием base R

do.call(rbind, Map(cbind, lapply(my_list, stack), code = names(my_list)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...