2012-11-16 34 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) 
} 
} 

इस समारोह रिटर्न घनत्व ख मानकों और आर के साथ निर्दिष्ट वितरण से करने के लिए मान x इसी। मैं x पर डिफ़ॉल्ट मान सेट करना चाहता हूं कि यदि उपयोगकर्ता x निर्दिष्ट नहीं करता है, तो डिफ़ॉल्ट मान गुजरते हैं। हम बस < - फ़ंक्शन (x = x.default, b, r) को सशक्त सेट कर सकते हैं ... हालांकि, मेरा डिफ़ॉल्ट मान आर और बी पर निर्भर करता है। मैं उसे कैसे कर सकता हूँ? मान लीजिए एक्स के लिए डिफ़ॉल्ट मान है:

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

आपकी मदद के लिए धन्यवाद,

+0

यदि आप 'x' गायब हैं, तो फ़ंक्शन को कॉल करने का इरादा कैसे रखते हैं? –

+0

हाय मैथ्यू, केवल बी और आर के साथ। मैं आर को यह जानना चाहता हूं कि यदि एक्स को नहीं कहा जाता है (यानी सशक्तिकरण में केवल दो तर्क हैं), तो आर एक्स के डिफ़ॉल्ट मान का उपयोग करता है। – Sam

+0

यह किया जा सकता है, लेकिन सूची में 'x' तर्क आखिरी है तो यह बहुत आसान है। –

उत्तर

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

अच्छा। क्या फ़ंक्शन में जांच करने के लिए वैसे भी x तर्क निर्दिष्ट किया गया है या नहीं? कुछ ऐसा जो सत्य या गलत देता है? – Sam

+3

हां, 'गायब (एक्स) '। यह जांच करेगा कि एक फ़ंक्शन के भीतर एक तर्क ('x') कॉल के भीतर निर्दिष्ट किया गया है या नहीं। – mnel

5

आप NULL को एक्स का मान सेट करने और अपने समारोह के पहले लाइनों में से एक हो सकता है हो सकता है

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