Reputation: 2995
I have this list:
myList<-list(c("Developmental Biology", " Neuroscience", " Cell Biology"
), c("Developmental Biology", " Neuroscience", " Cell Biology"
), c("Developmental Biology", " Neuroscience", " Genomics & Genetics"
), c("Developmental Biology", " Neuroscience", " Cell Biology"
), c("Developmental Biology", " Neuroscience", " Cell Biology"
), c("Developmental Biology", " Genomics & Genetics"))
I want this dataframe:
[,1] [,2] [,3]
[1,] "Developmental Biology" " Neuroscience" " Cell Biology"
[2,] "Developmental Biology" " Neuroscience" " Cell Biology"
[3,] "Developmental Biology" " Neuroscience" " Genomics & Genetics"
[4,] "Developmental Biology" " Neuroscience" " Cell Biology"
[5,] "Developmental Biology" " Neuroscience" " Cell Biology"
[6,] "Developmental Biology" " Genomics & Genetics" "NA"
I would have thought rbind.fill would be the way to go, but do.call(rbind.fill,myList)
returns NULL
.
Upvotes: 2
Views: 153
Reputation: 81733
The function rbind.fill
can only combine data frames. But the elements in the list myList
are character vectors. They need to be transformed to data frames before using rbind.fill
.
This does the trick:
library(plyr)
rbind.fill(lapply(myList, function(x) as.data.frame(t(as.matrix(x)))))
# V1 V2 V3
# 1 Developmental Biology Neuroscience Cell Biology
# 2 Developmental Biology Neuroscience Cell Biology
# 3 Developmental Biology Neuroscience Genomics & Genetics
# 4 Developmental Biology Neuroscience Cell Biology
# 5 Developmental Biology Neuroscience Cell Biology
# 6 Developmental Biology Genomics & Genetics <NA>
Upvotes: 3