2012-11-16 73 views
14

我具有低於一個簡單的密度函數:在函數中設置默認值?

dpower <- function(x, b, r){ 
if ((b <= 0 | r <= 0)) 
return("Wrong parameters entered!") 
else{ 
density.temp <- (r/b)*(x/b)^(r - 1) 
density.temp[which(x >= b | x <= 0)] <- NA 
return(density.temp) 
} 
} 

從與參數b和R指定分發對應於x值這個函數返回密度。我想在x上設置默認值,如果用戶沒有指定x,則默認值會通過。我們可以簡單地設置dpower < - 函數(x = x.default,b,r)...但是,我的默認值取決於r和b。我怎樣才能做到這一點?假設x的默認值是:

seq(from = 0.05, to = b, by = 0.001) 

感謝您的幫助,

+0

在'x'丟失的情況下,您打算如何調用該函數? –

+0

嗨馬修,只有b和r。我想讓R知道如果x沒有被調用(即dpower只有兩個參數),那麼R使用默認值x。 – Sam

+0

它可以完成,但如果'x'參數是列表中的最後一個,它會更容易。 –

回答

21
dpower <- function(b, r, x = seq(from = 0.05, to = b, by = 0.001)) 
.... 
+2

好。無論如何,檢查函數是否在函數被調用時指定了x參數?返回TRUE或FALSE的東西? – Sam

+3

是的,'缺少(x)'。這將測試一個函數中的參數('x')是否在調用中被指定。 – mnel

5

你可以X的值設置爲NULL和你的函數的第一行中有一個是

if(is.null(x)) 
    x <- seq(from = 0.05, to = b, by = 0.001)