R 仅为某些变量使用ggplot2创建箱线图循环

R 仅为某些变量使用ggplot2创建箱线图循环,r,data-science,R,Data Science,我有一个包含99个观测值的数据集,我需要为其中包含特定字符串的数据集创建箱线图。然而,当我运行这段代码时,我从原始函数而不是循环中得到57个完全相同的图。我想知道如何防止绘图被覆盖,但仍然创建所有57个。这是代码和情节图。 谢谢 #启动箱线图功能 myboxplot我建议阅读有关标准和非标准评估以及如何使用tidyverse的内容。这里有一些链接 我还发现这很有用 此外,您需要生成一个示例,以便能够复制您的问题。这是我创建的数据 df <- data.frame(label = r

我有一个包含99个观测值的数据集,我需要为其中包含特定字符串的数据集创建箱线图。然而,当我运行这段代码时,我从原始函数而不是循环中得到57个完全相同的图。我想知道如何防止绘图被覆盖,但仍然创建所有57个。这是代码和情节图。 谢谢

#启动箱线图功能

myboxplot我建议阅读有关标准和非标准评估以及如何使用tidyverse的内容。这里有一些链接

我还发现这很有用

此外,您需要生成一个示例,以便能够复制您的问题。这是我创建的数据

df <- data.frame(label = rep(c("a","b","c"), 5), 
                x = rnorm(15),
                y = rnorm(15),
                x2 = rnorm(15, 10),
                y2 = rnorm(15, 5))
在这里,我以与你相同的方式循环。不过,我只存储plot对象

allplots <- list()
for (i in seq_along(outcomes)){
  allplots[[i]]<- myboxplot2(myexposure = "label", myoutcome = outcomes[i])$plot
}
allplots

allplots
bp我是R的新手,请原谅我的无知。当我将myexposure和myoutcome放入函数时,我不再得到任何真实的箱线图,它们都具有相同的x轴,并且仍然不会循环。你发现环路有什么问题吗?
myboxplot2 <- function(mydata = df, myexposure, myoutcome){
 bp <- ggplot(mydata, aes_(as.name(myexposure), as.name(myoutcome))) +
   geom_boxplot()
 print(bp)
}
myboxplot2(myexposure =  "label", myoutcome =  "y")
outcomes <- names(df)[grep("^x", names(df), ignore.case = TRUE)]
allplots <- list()
for (i in seq_along(outcomes)){
  allplots[[i]]<- myboxplot2(myexposure = "label", myoutcome = outcomes[i])$plot
}
allplots