2016-11-10 42 views
0

我已經偶然發現了R兩次或三次的可變參數問題,但似乎我的問題比我預期的要複雜一些。這裏是具有可變參數的R函數,取決於是否存在其他參數

我有一個函數,它用它的變量做某事,但我想介紹另一個變量,一種標誌,它選擇函數的工作方式以及函數本身需要哪些參數:即輸入的數量和類型取決於(標誌)輸入。

好吧,一個例子是更好:

example = function(x,flag=1,y){ 
    if (flag) return(x) 
    else return(y) 
} 

,這是工作的罰款。 問題是,在這個例子中,你需要每次都指定x和y。相反,如果flag = 1且只有只有x,如果flag = 0,我想要一個函數只有。 (在這個愚蠢的例子中,它們基本上是兩個截然不同的函數,但在我的實際案例中,我有其他(常見)參數,我做了一些計算,這兩個函數的'部分'都需要)。

我知道可以爲未使用的參數指定任何值並且結果不會改變,但是我想要一個可以立即被用戶讀取的函數,並且需要指定一個贏得' t使用的功能

感謝您的任何幫助

+0

我不明白你的問題。 「在這個例子中,你需要每次都指定x和y」是不正確的。你可以做'example(y = 2,flag = FALSE)'。 – Roland

回答

0

以下情況如何。

example = function(x,flag=1,y){ 
    if (flag && !missing(x)) return(x) 
    else if(!flag && !missing(y)) return(y) 
} 

這將檢查標誌是否爲0或非零加上它將檢查參數是否丟失。你可能想要處理這種情況,因爲在這種情況下這個函數將返回NULL。

+0

是的,我知道使用missing(),這確實是一個解決方案..但我不喜歡的事實,只是閱讀參數列表你不能告訴哪些參數是必要的,哪些不是 – deltasun

相關問題