William Gunn
William Gunn

Reputation: 2995

How do I make my list into a dataframe if rbind.fill always returns null?

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

Answers (1)

Sven Hohenstein
Sven Hohenstein

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

Related Questions