使用 mapply 制作多个绘图

Making multiple plots with mapply

我制作了以下数据框df

V1 <- 1:10
V2 <- 11:20
V3 <- 21:30
V4 <- 31:40
df <- data.frame(V1,V2,V3,V4)

我还制作了一个函数,它应该根据参数 var1var2 制作一个简单的散点图。

 ScatterPlot <- function(var1, var2) {
     ggplot(data = df,
     aes(x = var1, y = var2)),
     environment = environment() +
     geom_point()
 }

我只需要以下变量组合的 2 个特定散点图:v1-v2v3-v4

我认为 mapply 会在这里派上用场,循环遍历不同的变量组合。

mapply(FUN = ScatterPlot,
       var1 = c(V1, V3),
       var2 = c(V2, V4))

我只期待 2 个地块,但这是我得到的:

我认为问题出在函数正在 df 中寻找一个名为 "var1" 的变量。我对 ggplots 的了解不足以解决这个问题,但是使用基本 R 图,你可以这样做:

baseplot <- function(var1, var2){
    plot(df[,var1], df[,var2], pch=19)
}
par(mfrow=c(1, 2))
mapply(baseplot, c("V1", "V3"), c("V2", "V4"))

编辑
使用 ggplot 并放置参数 environment=environment(),添加 print 并使用变量名称(在引号之间)似乎有效:

 ScatterPlot <- function(var1, var2) {
     print(ggplot(data = df,
     aes(x = df[,var1], y = df[,var2]),
     environment = environment()) +
     geom_point())
 }

mapply(ScatterPlot, var1=c("V1", "V3"), var2=c("V2", "V4"))