将全局环境中的多个数据帧合并到一个文件中

时间:2015-11-20 22:54:33

标签: r merge

我的全球环境中有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)})

1 个答案:

答案 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)