I have a list of data.frames with a rowname (sample-01) and 1 column (elem1), If I want to generate a data.frame with a list that contains data.frames with the same number of rows, it will be easy
do.call(cbind, mylist)
elem1 elem2 elem3
sample-01 E7 E1 E1
sample-02 E7 E1 E1
sample-03 E4 E8 E8
sample-04 E8 E3 E2
sample-05 E9 E3 E2
sample-06 E8 E3 E2
sample-07 E5 E6 E7
sample-08 E8 E3 E2
but if I have a different number of rows,
mylist
$elem1
elem1
sample-01 E7
sample-02 E7
sample-03 E4
sample-04 E8
sample-05 E9
sample-06 E8
$elem2
elem2
sample-01 E1
sample-02 E1
sample-03 E8
sample-04 E3
$elem3
elem3
sample-05 E2
sample-06 E2
sample-07 E7
sample-08 E2
how can I generate the data.frame, using all the row.names in this case will be from sample-01 to sample-08, and the colums will fill with NA if is not present ? something like:
elem1 elem2 elem3
sample-01 E7 E1 NA
sample-02 E7 E1 NA
sample-03 E4 E8 NA
sample-04 E8 E3 NA
sample-05 E9 NA E2
sample-06 E8 NA E2
sample-07 NA NA E7
sample-08 NA NA E2
thanks so much !!!
mylist %>%
map(rownames_to_column, "sample") %>%
reduce(full_join, "sample")
sample elem1 elem2 elem3
1 sample-01 E7 E1 <NA>
2 sample-02 E7 E1 <NA>
3 sample-03 E4 E8 <NA>
4 sample-04 E8 E3 <NA>
5 sample-05 E9 <NA> E2
6 sample-06 E8 <NA> E2
7 sample-07 <NA> <NA> E7
8 sample-08 <NA> <NA> E2