Say, I have a list of data frames like this:
# To create dummy data
df_create <- function(x) data.frame(a = 1:x, b = runif(x))
# Create list of dummy data frames
mylist <- list(df_create(10), df_create(10), df_create(10), df_create(10))
I can bind them together using cbind and do.call, like this:
# Bind data frames together
do.call(cbind, mylist)
#    a          b  a          b  a         b  a          b
#1   1 0.02000419  1 0.29098648  1 0.1433533  1 0.59307504
#2   2 0.26775702  2 0.23208306  2 0.1729216  2 0.04506591
#3   3 0.01336910  3 0.78083216  3 0.6713367  3 0.84223524
#4   4 0.46972923  4 0.43417273  4 0.2663393  4 0.03955171
#5   5 0.62543992  5 0.38561626  5 0.3620604  5 0.11384484
#6   6 0.25747343  6 0.53876212  6 0.2875563  6 0.10921397
#7   7 0.48790572  7 0.08488719  7 0.1627827  7 0.08641714
#8   8 0.54707416  8 0.28780866  8 0.7763911  8 0.48040182
#9   9 0.58214358  9 0.98220356  9 0.5845031  9 0.80809334
#10 10 0.11839613 10 0.40025797 10 0.7633499 10 0.86299285
But this leaves all the a columns, which are the same. So, what I really need to do is to join them. If I was to do just the first couple, it might look like this:
# Just two elements
left_join(mylist[[1]], mylist[[2]], by = "a")
#    a        b.x        b.y
#1   1 0.02000419 0.29098648
#2   2 0.26775702 0.23208306
#3   3 0.01336910 0.78083216
#4   4 0.46972923 0.43417273
#5   5 0.62543992 0.38561626
#6   6 0.25747343 0.53876212
#7   7 0.48790572 0.08488719
#8   8 0.54707416 0.28780866
#9   9 0.58214358 0.98220356
#10 10 0.11839613 0.40025797
which is great. That's what I want, but for all the data frames in the list. So, next I try to combine left_join with do.call:
# Expanding using do.call
do.call(left_join, c(mylist, by = "a"))
This throws the following error:
Error:
suffixmust be a character vector of length 2, not list of length 2
This seems to be referring to the suffix that is added to duplicate columns (e.g., the .x and .y added to my b columns in the two data frame join example above). As I'm not specifying suffix anywhere, it must be that default parameter values for left_join are not playing well with do.call, but I don't see how to resolve this error. Any suggestions? 
 
    