2010-01-31 6 views
11

मैं एस 4 फ़ंक्शन की परिभाषा को कैसे देख सकता हूं? उदाहरण के लिए, मैं पैकेज टीएसडीबीआई में टीएसकनेक्ट की परिभाषा देखना चाहता हूं। आदेशएस 4 विधियों का निरीक्षण करें

showMethods("TSconnect") 

का पता चलता है वहाँ दूसरों के बीच में है, drv = "histQuoteDriver" के लिए एक समारोह, dbname = "चरित्र" है।

मैं इस फ़ंक्शन की परिभाषा कैसे देख सकता हूं? यदि यह एक एस 3 फ़ंक्शन था, तो केवल पहला तर्क निश्चित (डीआरवी) होगा, जिसका प्रिंट (टीएसकनेक्ट.histQuoteDriver) के साथ निरीक्षण किया जा सकता है।

संपादित:

setMethod("TSconnect", signature(drv="histQuoteDriver", dbname="character"), 
    definition= function(drv, dbname, user="", password="", host="", ...){ 
    # user/password/host for future consideration 
    if (is.null(dbname)) stop("dbname must be specified") 
    if (dbname == "yahoo") { 
     con <- try(url("http://quote.yahoo.com"), silent = TRUE) 
     if(inherits(con, "try-error")) 
     stop("Could not establish TShistQuoteConnection to ", dbname) 
     close(con) 
     } 
    else if (dbname == "oanda") { 
     con <- try(url("http://www.oanda.com"), silent = TRUE) 
     if(inherits(con, "try-error")) 
     stop("Could not establish TShistQuoteConnection to ", dbname) 
     close(con) 
     } 
    else 
     warning(dbname, "not recognized. Connection assumed working, but not tested.") 

    new("TShistQuoteConnection", drv="histQuote", dbname=dbname, hasVintages=FALSE, hasPanels=FALSE, 
     user = user, password = password, host = host) 
    }) 

वहाँ एक रास्ता एक अनुसंधान सत्र के भीतर से इस परिभाषा प्राप्त करने के लिए है: आर-फोर्ज से मैं वांछित आउटपुट में पता चला?

+0

आपको http://stevencarlislewalker.wordpress.com/s3-s4-dictionary/ उपयोगी मिल सकता है। –

उत्तर

10

एस 4 वर्गों अपेक्षाकृत जटिल हैं, इसलिए मैं reading this introduction सुझाव है।

इस मामले में, टीएसडीबी एक सामान्य एस 4 वर्ग का एक उदाहरण है जो सभी विशिष्ट डेटाबेस पैकेजों (जैसे टीएसएमआईएसक्यूएल, टीएसपीओस्टग्रेएसक्यूएल, आदि) द्वारा बढ़ाया जाता है। आप जो देख रहे हैं उससे टीएसडीबीआई में टीएसकनेक्ट() विधि के लिए और कुछ नहीं है: drv = "character", dbname = "character" फ़ंक्शन के पैरामीटर हैं, न कि स्वयं में कार्य करता है। यदि आप कुछ विशिष्ट डेटाबेस पैकेज स्थापित करते हैं और showMethods ("TSconnect") का उपयोग करते हैं तो आप उस फ़ंक्शन के सभी विशिष्ट उदाहरण देखेंगे। यदि आप किसी विशिष्ट डेटाबेस ड्राइवर के साथ TSconnect() को कॉल करते हैं तो यह उचित फ़ंक्शन का उपयोग करेगा और उपयोग करेगा।

इस प्रकार सारांश कार्य जैसे कार्यों भी हैं। उदाहरण के लिए, showMethods(summary) पर कॉल करने का प्रयास करें। किस पैकेज को लोड किया गया है, इस पर निर्भर करते हुए, आपको

पर कई विधियों को देखना चाहिए, आप आर-फोर्ज: http://r-forge.r-project.org/plugins/scmsvn/viewcvs.php/pkg/TSdbi/R/TSdbi.R?rev=70&root=tsdbi&view=markup पर इसके लिए स्रोत कोड आसानी से देख सकते हैं। यह उस कार्य की सीमा है:

setGeneric("TSconnect", def= function(drv, dbname, ...) standardGeneric("TSconnect")) 

setMethod("TSconnect", signature(drv="character", dbname="character"), 
    definition=function(drv, dbname, ...) 
      TSconnect(dbDriver(drv), dbname=dbname, ...)) 
+1

एस 4 ट्यूटोरियल और आर-फोर्ज रिपोजिटरी का लिंक बहुत उपयोगी है। मैंने इसे स्पष्ट करने के लिए अपना प्रश्न संपादित कर लिया है। लिंक के लिए –

+0

+1। –

संबंधित मुद्दे