【问题标题】:How to pass argument input to a self-defined function in R?如何将参数输入传递给R中的自定义函数?
【发布时间】:2015-06-08 00:22:37
【问题描述】:

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

我应该怎么做才能完成这项工作?

【问题讨论】:

    标签: r function input ggplot2 arguments


    【解决方案1】:

    试试:

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

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

    【讨论】:

    • 谢谢!这正是我需要的!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 1970-01-01
      相关资源
      最近更新 更多