使用R中具有相同列名的两个数据帧生成多个多个多数

时间:2015-01-22 10:31:11

标签: r

我有两个数据框(data1和data2),其中相同的列名称称为A,B,C,D,G,F,G,H,.... 我想通过组合不同的列来创建几个包含data1和data2的图形的图形。所以我可以将函数称为:

getPlot(data1, data2, A, B, C, D)
getPlot(data1, data2, B, F, G, H)
getPlot(data1, data2, A, C, F, B)

...

以及列的任何组合。

我写了这样的函数:

getPlot = function(df1, df2, M1, M2, M3, M4){
   png(file=paste("",M1,"",M2,"vs",M3,"",M4,"_plot.png", sep=""), width=800, height=800 )

   plot(df1$M1-df1$M2, df1$M3-df1$M4, xlab = M1-M2, ylab = M3-M4, type="p", pch=20, cex=0.5, col="red")

   points(df2$M1-df2$M2, df2$M3-df2$M4, type="p", pch=20, cex=0.5, col="red")

   dev.off()
}

但问题是我正在使用列名

调用该函数
 getPlot(data1, data2, A, B, C, D)

因为它们不是现有的变量,getPlot无法理解我想要得到的东西......因此,例如,df1 $ M1对他来说没有任何意义......

我怎样才能获得具有不同列组合的不同图?

1 个答案:

答案 0 :(得分:1)

使用此功能:

getPlot = function(df1, df2, M1, M2, M3, M4)
{
png(file=paste("",M1,"",M2,"vs",M3,"",M4,"_plot.png", sep=""), width=800, height=800 )

plot(df1[[M1]]-df1[[M2]], df1[[M3]]-df1[[M4]], xlab = paste0(M1,"-",M2), ylab = paste0(M3,"-",M4), type="p", pch=20, cex=0.5, col="red")

points(df2[[M1]]-df2[[M2]], df2[[M3]]-df2[[M4]], type="p", pch=20, cex=0.5, col="red")
dev.off()
} 

然后像这样称呼它:

getPlot(data1, data2, "A", "B", "C", "D")

此处M1M2是字符串,我们使用以下事实:

 data1$A

data1[["A"]]

是访问Adata1的两种方法。