I\'ve got a list of lists, call it listHolder
, which has length 5.
Every element in listHolder
is a list of numeric data, with 160 or so e
This is the easiest solution I've found.
library(jsonlite)
library(purrr)
library(data.table)
dt_list <- map(list_of_lists, as.data.table)
dt <- rbindlist(dt_list, fill = TRUE, idcol = T)
dt
I think this is easier than the previous solutions:
mydf = data.frame(x1 = c('a', 'b', 'c'))
mylist = list(c(4, 5), c(4, 5), c(4, 5))
mydf$x2 = mylist
print(mydf)
x1 x2
1 a 4, 5
2 b 4, 5
3 c 4, 5
The value of nrow needs to be fixed. I fixed your code as follows:
dd <- as.data.frame(matrix(unlist(listHolder), nrow=length(unlist(listHolder[1]))))
This achieves a similar result, but is more intuitive (to me at least)
#Generate fake data
listoflists=list(c(1,'a',3,4),c(5,'b',6,7))
#Convert to a dataframe, transpose, and convert the resulting matrix back to a dataframe
df= as.data.frame(t(as.data.frame(listoflists)))
#Strip out the rownames if desired
rownames(df)<-NULL
#Show result
df
AS @dimitris_ps mentioned earlier, the answer could be:
do.call(rbind, listHolder)
Since do.call naturally "strips" 1 level of the "list of list", obtaining a list, not a list of lists.
After that, rbind can handle the elements on the list and create a matrix.