[R] Converting a list to a data frame

Jeff Newmiller
Wed, 02 May 2018 18:53:00 -0000

Another approach:

########
library(tidyr)
L <- list( A = data.frame( x=1:2, y=3:4 )
          , B = data.frame( x=5:6, y=7:8 )
          )
D <- data.frame( Type = names( L )
                , stringsAsFactors = FALSE
                )
D$data <- L
unnest(D, data)
#>   Type x y
#> 1    A 1 3
#> 2    A 2 4
#> 3    B 5 7
#> 4    B 6 8
########

On Wed, 2 May 2018, Eivind K. Dovik wrote:

> On Wed, 2 May 2018, Kevin E. Thorpe wrote:
>
>> I suspect this is pretty easy, but I'm having trouble figuring it
out.
>> Basically, I have a list of data frames such as the following example:
>>
>> list(A=data.frame(x=1:2, y=3:4),B=data.frame(x=5:6,y=7:8))
>>
>> I would like to turn this into  data frame where the list elements are
>> essentially rbind'ed together and the element name becomes a new
variable.
>> For example, I would like to turn the list above into a data frame that
>> looks like this:
>>
>>
data.frame(type=c("A","A","B","B"),x=c(1:2,5:6),y=c(3:4,7:8))
>>
>> Appreciate any pointers.
>>
>> Kevin
>
> Hi, Kevin.
>
> Here's code that will generate your desired data frame.
>
> # List as provided
> thelist <- list(A=data.frame(x=1:2, y=3:4),B=data.frame(x=5:6,y=7:8))
> thelist
>
> # Creating the type-vector
> type <- c()
> for(i in 1:length(thelist)){
>  type <- c(type, rep(names(thelist)[i], sapply(thelist, nrow)[i]))
> }
>
> # Creating the data frame
> df <- data.frame(type, do.call(rbind.data.frame, c(thelist,
make.row.names =
> FALSE)))
> df
>
>
> Kind regards,
> Eivind K. Dovik
> Bergen, NO
>
>
>
>
>>
>> --
>> Kevin E. Thorpe
>> Head of Biostatistics,  Applied Health Research Centre (AHRC)
>> Li Ka Shing Knowledge Institute of St. Michael's Hospital
>> Assistant Professor, Dalla Lana School of Public Health
>> University of Toronto
>> email: kevin.thorpe at utoronto.ca  Tel: 416.864.5776  Fax:
416.864.3016
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live
Go...
                                       Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k