如何将参数输入传递给 R 中的自定义函数?

How to pass argument input to a self-defined function in R?

我做了一个自定义的plottest函数是这样的:

plottest<-function(dataframe, var1){

  ggplot(dataframe)+geom_point(aes(x=T, y=var1))

}

我希望我可以将数据框和列名传递给它,这样我就可以重复绘制不同的列。

df <- data.frame(T=(1:10), y1=(21:30), y2=(51:60), y3 = (61:70))

但是当我这样做时:

library(ggplot2)    
plottest(df, y1)

显示错误消息 saying:object 'var1' 未找到。

我应该怎么做才能使这项工作正常进行?

尝试:

df <- data.frame(T=(1:10), y1=(21:30), y2=(51:60), y3 = (61:70))

plottest<-function(dataframe, var1){
  ggplot(dataframe, aes_string(x='T', y=var1))+geom_point()
}

plottest(df, 'y1')

将函数参数中的横坐标固定为默认参数会更清晰。

您可以使用简单的添加行使您的原始函数工作(我添加了 ylab() 调用以防止绘图始终使用 "y" 作为 ylab。

plottest<-function(dataframe, var1){
    y <- substitute(var1)
   ggplot(dataframe)+geom_point(aes(x=T, y=y)) + ylab(y) 
 }
 library(ggplot2)    
 plottest(df, y1)