# put all data frames into list
df_list <- list(df1, df2, df3)
# merge all data frames in list
Reduce(function(x, y) merge(x, y, all=TRUE), df_list)
# Reduce() takes a function ("function(x,y) merge(x,y, all=TRUE") of two
# arguments and a list or vector ("df_list") which is to be ‘reduced’
# using the function.
# The function is first called on the first two components of "df_list",
# then with the result of that as the first argument and the third
# component of "df_list" as the second argument,
# then again with the result of the second step as first argument
# and the fourth component of "df_list" as the second argument etc.
# The process is continued until all elements of "df_list" have been processed.