Skip to content
Prev 349732 / 398513 Next

Combine list element by column name to make a dataframe

Maybe something like the appended?

-- Mike

lst <- list(setNames(c(1,10,50,60,70,80),
                     c("id","id1","math","phy","che","bio")),
            setNames(c(2,20,45),
                     c("id","id1","phy")),
            setNames(c(3,30,75),
                     c("id","id1","bio")))

lst


df <- rbind(c(1,10,50,60,70,80),
            c(2,20,NA,45,NA,NA),
            c(3,30,NA,NA,NA,75))

colnames(df)<-c("id","id1","math","phy","che","bio")
row.names(df) <- NULL

df

allNames <- unique(unlist(lapply(lst, names)))
allNames

newLst <- lapply(lst, function(element) {
    element[allNames]
})
newLst

df2 <- do.call(rbind, newLst)
df2

all.equal(df, df2)

On Sun, Apr 5, 2015 at 11:05 PM, Mohammad Tanvir Ahamed via R-help
<r-help at r-project.org> wrote: