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

时间:2015-04-02 22:02:15

标签: r function input ggplot2 arguments

我做了一个自定义的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)

错误消息显示:找不到对象'var1'。

我该怎么做才能使这项工作?

2 个答案:

答案 0 :(得分:3)

尝试:

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')

将函数参数中的横坐标修改为默认参数会更加清晰。

enter image description here

答案 1 :(得分:0)

您可以使用简单的添加行使原始函数工作(我添加了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)