将一个条件传递给函数,使函数对R中传递的条件的所有值都有效

将一个条件传递给函数,使函数对R中传递的条件的所有值都有效,r,function,ggplot2,R,Function,Ggplot2,这可能很傻,但我不知道怎么做 我想要什么 我的函数是这样的 plot_exp <- function(i){ dat <- subset(dat.frame,En == i ) ggplot(dat,aes(x=hours, y=variable, fill = Mn)) + geom_point(aes(x=hours, y=variable, fill = Mn),size = 3,color = Mi) + geom_smooth(stat=

这可能很傻,但我不知道怎么做

我想要什么

我的函数是这样的

plot_exp <- 
function(i){  
    dat <- subset(dat.frame,En == i )
    ggplot(dat,aes(x=hours, y=variable, fill = Mn)) + 
      geom_point(aes(x=hours, y=variable, fill = Mn),size = 3,color = Mi) + geom_smooth(stat= "smooth" , alpha = I(0.01))
  }
ll <- lapply(seq_len(EXP), plot_exp)
do.call(grid.arrange,  ll)
我将把上面的data.frame作为输入,我想为var1运行一次函数并生成两个绘图,然后再次为var2运行相同的函数并生成两个以上的绘图,然后使用grid.arrange组合所有这些绘图

我必须从命令行读取变量值,然后我必须执行以下操作才能从主数据框中获取所需的数据

subset((aggregate(cbind(variable1,variable2)~En+Mn+Hours,a, FUN=mean)))

在我从命令行读取并将它们存储在“variable1”和“variable2”中之后,如果我在上面的命令中直接调用它们,那么它就不起作用了。我应该怎么做才能在命令行中输入这两个变量值。

我做了一些更改,并在示例数据上运行了它。基本上,我只需要使用
aes\u string
而不是
aes
来允许一个具有列名的变量

myvars<-c("var1", "var2")

plot_exp <- function(i, plotvar) {  
    dat <- subset(dat.frame,En == i )
    ggplot(dat,aes_string(x="Hours", y=plotvar, fill = "Mn")) + 
       geom_point(aes(color=Mn), size = 3) + 
       geom_smooth(stat= "smooth" , alpha = I(0.01), method="loess")
  }
ll <- do.call(Map, c(plot_exp, expand.grid(i=1:2, plotvar=myvars, stringsAsFactors=F)))
do.call(grid.arrange,  ll)

myvarsSo just
i
是在
dat.frame
中具有变量名的字符串吗?而
En
dat.frame
中的另一列吗?您想在这两列相等的地方创建子集吗?在
dat.frame
中还有另外两列名为
hours
variable
的列,您实际上想要绘制吗?@MrFlick我已经添加了dta.frame请检查。我可以用我发布的原始函数处理单变量绘制。但是现在我需要处理两个变量,每个变量有两个En值。意思是Var1=>En=1,En=2(两个图)和Var2==>En=1,En=2(两个图)。谢谢你,这就是我要找的。我还有一个关于变量调用的简单问题。我在问题的末尾加了一句,请查收。再次感谢。
myvars<-c("var1", "var2")

plot_exp <- function(i, plotvar) {  
    dat <- subset(dat.frame,En == i )
    ggplot(dat,aes_string(x="Hours", y=plotvar, fill = "Mn")) + 
       geom_point(aes(color=Mn), size = 3) + 
       geom_smooth(stat= "smooth" , alpha = I(0.01), method="loess")
  }
ll <- do.call(Map, c(plot_exp, expand.grid(i=1:2, plotvar=myvars, stringsAsFactors=F)))
do.call(grid.arrange,  ll)
myvars <- c("var1", "var2")
subset(a[,myvars], a[,c("En","Mn","Hours")], FUN=mean)