I have several dataframes in a list, which i want to merge into one big dataframe. The actual list contains several thouands of this dataframes and i am therefore looking for a preferably efficient solution.

The list looks similar to this:

```
v <- data.frame(answer = c(1,1,1))
rownames(v) <- c("A","B","C")
w <- data.frame(answer = c(1,0,0))
rownames(w) <- c("A","B","D")
x <- data.frame(answer = c(1,1,1))
rownames(x) <- c("A","B","C")
y <- data.frame(answer = c(0,0,0))
rownames(y) <- c("A","C","D")
z <- data.frame(answer = c(0,0,0,1))
rownames(z) <- c("A","B","C","D")
l <- list(v,w,x,y,z)
names(l) <- c("V","W","X","Y","Z")

```

The final output should look like this:

```
    v    W    X    Y    Z
A   1    1    1    0    0
B   1    0    1    NA   0
C   1    NA   1    0    0
D   NA   0    NA   0    1

```

**What i have tried already** (feel free to ignore this part, if you already have a working solution)

```
  df <- data.frame(matrix(unlist(l), nrow=length(l), byrow=T),stringsAsFactors=FALSE)

```

and 

```
df <- do.call(rbind.data.frame, l)

```

and

```
df<- rbindlist(l) (from library("data.frame"))

```

Those all loose the information contained in the rownames and only seemed to work if all dataframes have the same length and the same order. 

The only one that kinda worked with my actual data was something along the lines of:

```
df<- suppressWarnings(Reduce(function(dtf1, dtf2) merge(dtf1, dtf2, by = 
"answer", all = TRUE),l))

```

but i am not able to make it work with my example list and even when it worked it was extremly unefficiently and took ages once the list got longer.