Проще всего было бы использовать dplyr::bind_rows
dplyr::bind_rows
library(dplyr) bind_rows(lst(df1,df2,df3),.id="newCol") # newCol X1 X2 # 1 df1 1 1 # 2 df1 1 1 # 3 df2 2 2 # 4 df2 2 2 # 5 df3 3 3 # 6 df3 3 3