2017-11-11 17 views
7

Mam zagnieżdżoną listę, która została odebrana z wywołania REST. Odpowiedź zawiera zagnieżdżony zestaw list z bazowej relacyjnej bazy danych. Chcę spłaszczyć listę, aby uprościć analizę. Próbowałem postępować zgodnie z wytycznymi w purrr tutorial, ale nie mogę go uruchomić.Jaki jest najlepszy sposób na spłaszczanie list zagnieżdżonych uzyskanych z relacyjnej bazy danych za pomocą narzędzi Tidyverse?

Moja uproszczony wejście

hist1 <- list(field="type", from_string ="issue", to_string="bug") 
hist2 <- list(field="status", from_string ="open", to_string="closed") 
hist3 <- list(field="type", from_string ="bug", to_string="issue") 
issue1 <- list(id="123", created = "2017-11-08", issue_history = list(hist1, hist2)) 
issue2 <- list(id="124", created = "2017-11-10", issue_history = list(hist1, hist3)) 
issue <- list(issue1, issue2) 

szukam wyjścia spłaszczonej:

id created type from_string to_string 
123 2017-11-08 type issue  bug 
123 2017-11-08 status open   closed 
123 2017-11-10 type bug   issue 

Jaki jest najlepszy sposób budowania scable logiki do tego?

Najlepszy (dla mnie):

  • narzędzi z tidyverse
  • kod, który jest łatwy do utrzymania
  • nie muszą skalować milionów spraw, czyli wydajność i pamięć nie są krytyczne elementy
+0

Dziękujemy za roztworze @Psidom pomoc będzie mniej skomplikowane dla mnie, aby utrzymać – rgustavs

Odpowiedz

6

Innym rozwiązaniem zainspirowany @ Nate'a odpowiedź:

map_df(issue, as_tibble) %>% 
    mutate(issue_history = map(issue_history, as_tibble)) %>% 
    unnest() 

# A tibble: 4 x 5 
#  id created field from_string to_string 
# <chr>  <chr> <chr>  <chr>  <chr> 
#1 123 2017-11-08 type  issue  bug 
#2 123 2017-11-08 status  open closed 
#3 124 2017-11-10 type  issue  bug 
#4 124 2017-11-10 type   bug  issue 
5

Nie jestem pewien, czy jest to więcej niż jeden sposób, ale działa.

library(tidyverse) 

map(issue, as.tibble) %>% 
    map_df(~ rowwise(.) %>% 
      mutate(issue_history = list(bind_rows(issue_history))) %>% 
      unnest()) 

# A tibble: 4 x 5 
    id created field from_string to_string 
    <chr>  <chr> <chr>  <chr>  <chr> 
1 123 2017-11-08 type  issue  bug 
2 123 2017-11-08 status  open closed 
3 124 2017-11-10 type  issue  bug 
4 124 2017-11-10 type   bug  issue 
Powiązane problemy