سؤال

كيف يمكنني عرض تعريف وظيفة S4؟ على سبيل المثال ، أود أن أرى تعريف tsconnect في حزمة TSDBI. الامر

showMethods("TSconnect")

يكشف أن هناك ، من بين أمور أخرى ، وظيفة drv = "histquotedriver" ، dbname = "حرف".

كيف يمكنني رؤية تعريف هذه الوظيفة؟ إذا كانت وظيفة S3 ، فستكون هناك فقط الوسيطة الأولى (DRV) ، والتي يمكن فحصها بالطباعة (tsconnect.histquotedriver).

يحرر: من R-Forge اكتشفت الإخراج المطلوب:

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

هل هناك طريقة للحصول على هذا التعريف من داخل جلسة R؟

هل كانت مفيدة؟

المحلول

فصول S4 معقدة نسبيًا ، لذلك أود أن أقترح قراءة هذه المقدمة.

في هذه الحالة ، يعد TSDBI مثالًا على فئة S4 عامة يتم تمديدها بواسطة جميع حزم قواعد البيانات المحددة (على سبيل المثال TSMYSQL ، TSPOSTGRESQL ، إلخ). لا يوجد شيء أكثر من طريقة TSConnect () في TSDBI مما تراه: drv = "حرف" ، dbname = "الحرف" هي معلمات للوظيفة ، وليس الوظائف في حد ذاتها. إذا قمت بتثبيت بعض حزم قاعدة البيانات المحددة واستخدمت showmethods ("tsconnect") ، فسترى جميع الحالات المحددة لتلك الوظيفة. إذا قمت بالاتصال بـ TSConnect () باستخدام برنامج تشغيل قاعدة بيانات معين ، فسيذهب ويستخدم الوظيفة المناسبة.

هذه هي الطريقة التي تعمل بها وظائف مثل الملخص أيضًا. على سبيل المثال ، حاول الاتصال showMethods(summary). اعتمادًا على الحزم التي يتم تحميلها ، يجب أن ترى طرقًا متعددة يتم إرجاعها

يمكنك بسهولة رؤية الكود المصدري له على R-Forge: 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, ...))
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top