2017-11-11 18 views
7

मेरे पास एक नेस्टेड सूची है जिसे आरईएसटी कॉल से प्राप्त हुआ है। प्रतिक्रिया में अंतर्निहित संबंधपरक डेटाबेस से सूचियों का घोंसला सेट शामिल है। मैं विश्लेषण को सरल बनाने के लिए सूची को फ़्लैट करना चाहता हूं। मैंने purrr tutorial में दिशानिर्देशों का पालन करने का प्रयास किया है लेकिन मैं इसे काम नहीं कर सकता।tidyverse उपकरण का उपयोग कर एक रिलेशनल डेटाबेस से व्युत्पन्न नेस्टेड सूचियों को फ़्लैट करने का सबसे अच्छा तरीका कौन सा है?

मेरे सरलीकृत इनपुट

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) 

मैं एक चपटी उत्पादन रहा हूँ:

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 

इस के लिए scable तर्क के निर्माण के लिए सबसे अच्छा तरीका है कौन?

बेस्ट (मेरे लिए): से tidyverse

  • कोड है कि सरल है
  • बनाए रखने के लिए मुद्दों, यानी प्रदर्शन और स्मृति महत्वपूर्ण तत्व नहीं हैं के लाखों लोगों के लिए पैमाने पर करने की जरूरत नहीं है

    • उपकरण
  • +0

    मदद @Psidom समाधान के लिए बहुत-बहुत धन्यवाद मुझे बनाए रखने के लिए के लिए कम जटिल हो जाएगा – rgustavs

    उत्तर

    6

    एक अन्य समाधान द्वारा @ नैट के जवाब प्रेरित:

    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

    यह सुनिश्चित करने के लिए कोई और purrr वाई तरीका नहीं है, लेकिन यह काम करता है।

    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 
    
    संबंधित मुद्दे

     संबंधित मुद्दे