我有两个数据框(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对他来说没有任何意义......
我怎样才能获得具有不同列组合的不同图?
答案 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")
此处M1
和M2
是字符串,我们使用以下事实:
data1$A
和
data1[["A"]]
是访问A
列data1
的两种方法。