Предполагая, что все задействованные data.frames имеют одинаковое количество строк, вы можете просто:
toadd<-setdiff(colnames(a),colnames(b))
b[toadd]<-a[toadd]
Обернуть вышеупомянутое в функцию:
f<-function(refdf, ...) {
res<-listdf<-list(...)
res<-lapply(listdf, function(x) {
toadd<-setdiff(names(refdf),names(x))
x[toadd]<-refdf[toadd]
x
})
c(list(refdf),res)
}
Затем попробуйте, например,:
f(a,b)
f(a,b,d)