2015-04-02 48 views
1

我做了一個自定義plottest功能如下:如何將參數輸入傳遞給R中的自定義函數?

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' 未找到。

我該怎麼做才能做到這一點?

回答

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

+0

謝謝!這正是我需要的! – user3768495 2015-04-02 22:41:19

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) 
相關問題