2017-06-11 34 views
-1

我有以下包裝函數:包裝功能的R與可選參數

plot.histogram = function(x.var, y.var, pf) { 
    ggplot(aes_string(x.var, y.var), data = pf) + 
    geom_bar(stat="identity", color = "black", fill = "steelblue") 
} 

功能工作正常。但是,有時候我不想通過y.var,只是在y軸上使用默認的count。因此,在該特定情況下,圖表不應該是條形圖,而是直方圖。因此,根據y.var的缺席情況,該功能應自動決定是否繪製條形圖或直方圖。

那麼,我怎樣才能使參數y.var可選,並自動有一個直方圖繪製,如果沒有給出y.var

+0

重複的例子,請。和barplot!=直方圖,你想要什麼? – AkselA

+0

你是對的。編輯它:現在問題區分條形圖和直方圖。我沒有添加一個可重複的例子,以保持讀者的簡短。這更多的是功能/邏輯問題。 –

回答

1

如果你設置保持當前參數,我會設置y.var有一個初始值NA然後只是傳遞它。最初設定的目標p後,您可以簡單地傳遞y.var參數以後:

plot.histogram = function(x.var, y.var = NA, pf) { 
    p = ggplot(aes_string(x.var), data = pf) 
    if(is.na(y.var) == TRUE){ 
    p + geom_histogram() 
    } 
    else{ 
    p + geom_bar(aes_string(y = y.var),stat="identity", color = "black", fill = "steelblue") 
    } 
} 
+0

這正是我所需要的。謝謝! –

+0

使用is.na()時不需要'== True'。 –