Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert list of vectors to data frame

I'm trying to convert a list of vectors (a multidimensional array essentially) into a data frame, but every time I try I'm getting unexpected results.

My aim is to instantiate a blank list, populate it in a for loop with vectors containing information about that iteration of the loop, then convert it into a data frame after it's finished.

> vectorList <- list() > for(i in  1:5){ +     vectorList[[i]] <- c("number" = i, "square root" = sqrt(i)) + } > vectorList 

Outputs:

> [[1]] >      number square root  >           1           1  >  > [[2]] >      number square root  >    2.000000    1.414214  >  > [[3]] >      number square root  >    3.000000    1.732051  >  > [[4]] >      number square root  >           4           2  >  > [[5]] >      number square root  >    5.000000    2.236068 

Now I want this to become a data frame with 5 observations of 2 variables, but trying to create a data frame from 'vectorList'

numbers <- data.frame(vectorList) 

results in 2 observations of 5 variables.

Weirdly it won't even be coerced with reshape2 (which I know would be an awful work around, but I tried).

Anyone got any insight?

like image 331
Nick Avatar asked Apr 27 '17 15:04

Nick


People also ask

How do you convert a vector into a Dataframe?

For example, if we have a vector x then it can be converted to data frame by using as. data. frame(x) and this can be done for a matrix as well.

How do I turn a large list into a Dataframe in R?

First, create a large list. Then use the Map function on the list and convert it to dataframe using the as. data. frame function in R.


1 Answers

You can use:

as.data.frame(do.call(rbind, vectorList)) 

Or:

library(data.table) rbindlist(lapply(vectorList, as.data.frame.list)) 

Or:

library(dplyr) bind_rows(lapply(vectorList, as.data.frame.list)) 
like image 135
h3rm4n Avatar answered Sep 24 '22 15:09

h3rm4n