2014-09-24 65 views
0

快速提問。我在R中編寫了一些複雜的函數,並且出現了我想要使用的幾個函數默認值(例如,nA = 5,nB = 5,nPos = 4,nNeg = 4)的情況。這些默認值是內置到函數中的,所以我不必指定它們,除非我想修改它們。但是,無論如何要在函數中做一些邏輯來看看它們是否被提及?例如,假設一個用戶只能指定(nA = 3和nB = 5)...是否有辦法從中獲取數字8,因爲它們在函數調用中被用戶顯式引用(如反對依靠默認值?)。測試是否使用默認參數或在函數調用中修改R

希望是有道理的。

+0

您可以使用您的變量函數中,如果用戶沒有指定他們,他們會得到默認值。那麼,除此之外,你究竟需要什麼? – 2014-09-24 08:37:24

+0

這些都很有幫助。我知道,默認值在未指定時設置。我想要的是告訴用戶在函數調用中是否顯式指定了參數而不是依賴於默認值。換句話說,函數是否有任何方法來判斷在調用中是否指定了參數,而不是依賴默認值? (提示:一種解決方案可能是查看這些值是否處於默認值,但我希望進行邏輯測試以查看它們是否在通話中被提及)。 – tcarpenter 2014-09-26 05:43:37

回答

1

missing()

> f = function(a=1, b=2, c=3) missing(b) 
> f(1, c=3) 
[1] TRUE 
> f(1, 3) 
[1] FALSE 
+0

只要注意:在'?missing'上,「丟失(x)只有在x進入函數後沒有改變時纔可靠」 – 2014-09-24 14:01:03

0
f <- function(a=2, b=3) { 
    "b" %in% names(as.list(match.call())) 
} 

f() 
#[1] FALSE 
f(b=1) 
#[1] TRUE 
0

羅蘭的回答是更精確的,但也許你正在尋找的是

function(a=5) if(a !=5) print('hey, you changed a!') 
相關問題