Convert the list of vectors into a data frame

advertisements

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?


You can use:

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

Or:

library(data.table)
rbindlist(vectorList)

Or:

library(dplyr)
bind_rows(vectorList)