2012-11-16 18 views
14

mam prostą funkcję poniżej gęstośćUstawianie domyślnej wartości funkcji?

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) 
} 
} 

Gęstość powraca funkcyjne odpowiadające wartości X od określonego rozkładu o parametry B, R. Chciałbym ustawić wartość domyślną na x, jeśli użytkownik nie określi x, wartości domyślne przechodzą przez. Możemy po prostu ustawić dpower < - function (x = x.default, b, r) ... jednak moja domyślna wartość zależy od r i b. Jak mogę to zrobić? Przypuszczam, że domyślna wartość dla x jest:

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

Dzięki za pomoc,

+0

Jak zamierzasz wywołać funkcję, w przypadku braku "x"? –

+0

Cześć Matthew, tylko b i r. Chcę R wiedzieć, że jeśli x nie jest wywoływana (tzn. Dpower ma tylko dwa argumenty), to R używa domyślnej wartości x. – Sam

+0

Można to zrobić, ale jest o wiele łatwiej, jeśli argument "x" jest ostatni na liście. –

Odpowiedz

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

Dobrze. Czy mimo to istnieje funkcja sprawdzenia, czy argument x został określony podczas wywoływania funkcji? coś, co zwraca TRUE lub FALSE? – Sam

+3

Tak, 'missing (x)'. Spowoduje to sprawdzenie, czy argument ('x') w funkcji, która została określona w wywołaniu. – mnel

5

Można ustawić wartość X NULL i mają jedną z pierwszych linii swojej funkcji będzie

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