[R] Converting a list to a data frame
Kevin E. Thorpe
kev|n@thorpe @end|ng |rom utoronto@c@
Thu May 3 20:20:13 CEST 2018
On 05/03/2018 01:28 PM, Hadley Wickham wrote:
> On Wed, May 2, 2018 at 11:53 AM, Jeff Newmiller
> <jdnewmil using dcn.davis.ca.us> wrote:
>> 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
>> ########
>
> I think a slightly more idiomatic tidyverse solution is dplyr::bind_rows()
>
> l <- list(
> A = data.frame(x = 1:2, y = 3:4),
> B = data.frame(x = 5:6, y = 7:8)
> )
>
> dplyr::bind_rows(l, .id = "type")
> #> type x y
> #> 1 A 1 3
> #> 2 A 2 4
> #> 3 B 5 7
> #> 4 B 6 8
>
> This also has the advantage of returning a data frame when the inputs
> are data frames.
>
> Hadley
>
I _clearly_ need to learn the dplyr package.
--
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 using utoronto.ca Tel: 416.864.5776 Fax: 416.864.3016
More information about the R-help
mailing list