我的全球环境中有4个数据帧。它们被命名为propens1,propens2,propens3和propens4。我有一个第五个文件,名为“bmi”,我想将bmi与所有四个propen文件合并。我可以使用dplyr连接或基本合并单独合并它们,但我想知道是否有办法将它与单个语句合并而不是4。
这是我尝试过的,但它不起作用?任何建议都受到欢迎和赞赏。
flist=ls(pattern="propen")
sapply(flist,function(x){merge(x,bmi,by="cfact",all.x=T)})
答案 0 :(得分:6)
如果您有多个相关数据框,最好将它们全部放在列表中,而不是在全局环境中将它们全部分开。根据您的陈述
它们被命名为propens1,propens2,propens3和propens4
我们可以使用
收集所有数据框datalist <- mget(ls(pattern = "propens[1-4]"))
然后,由于您希望结果中包含四个数据帧,我们所要做的就是在每个数据帧上运行merge()
。现在我们在列表中有数据框,我们可以使用lapply()
轻松完成。
lapply(datalist, merge, y = bmi, by = "cfact", all.x = TRUE)