简体   繁体   中英

unest list with nested data frames in R

I'm working on parsing out some data from the foursquare api and I have one portion of the results that look like the following, a large list with nested dataframes:

                     List of 1
                      $ :List of 26
                       ..$ :'data.frame':   1 obs. of  6 variables:
                       .. ..$ id        : chr "4bf58dd8d48988d129951735"
                        .. ..$ name      : chr "Train Station"
                         .. ..$ pluralName: chr "Train Stations"
                         .. ..$ shortName : chr "Train Station"
                          .. ..$ icon      :'data.frame':   1 obs. of  2 variables:
                          .. .. ..$ prefix: chr                            "https://ss3.4sqi.net/img/categories_v2/travel/trainstation_"
                  .. .. ..$ suffix: chr ".png"
                  .. ..$ primary   : logi TRUE
                  ..$ :'data.frame':    1 obs. of  6 variables:
                 .. ..$ id        : chr "4bf58dd8d48988d1fe931735"
                   .. ..$ name      : chr "Bus Station"
                  .. ..$ pluralName: chr "Bus Stations"
                 .. ..$ shortName : chr "Bus Station"
                 .. ..$ icon      :'data.frame':    1 obs. of  2 variables:
                  .. .. ..$ prefix: chr      "https://ss3.4sqi.net/img/categories_v2/travel/busstation_"
                  .. .. ..$ suffix: chr ".png"
                  .. ..$ primary   : logi TRUE
                   ..$ :'data.frame':   1 obs. of  6 variables:

I'm trying yo unnest these dataframe for certain elements so that i can cbind them to a pre-existing file I have. Ultimately I would like the end result to look something like the following:

                     $id                             $name
                     4bf58dd8d48988d129951735       train station 
                     4bf58dd8d48988d1fe931735       bus station

etc.

Thanks!

Suppose your large list is called mylist . Then you can either iterate through mylist[[1]] and extract the relevant columns:

do.call(rbind, lapply(mylist[[1]], `[`, c("id", "name")))

or use the rbind.pages function from jsonlite :

jsonlite::rbind.pages(mylist[[1]])[c("id", "name")]

both of which will give you

#                         id          name
# 1 4bf58dd8d48988d129951735 Train Station
# 2 4bf58dd8d48988d1fe931735   Bus Station

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM