Осмотрите методы S4

Как я могу просмотреть определение функции S4? Например, я хотел бы видеть определение TSconnect в пакете TSdbi. Команда

showMethods("TSconnect")

показывает, что существует, среди других, функции для drv = "histQuoteDriver", dbname = "символ".

Как я могу видеть определение этой функции? Если бы это была функция S3, то был бы только первый аргумент, определимый (drv), который мог быть осмотрен с печатью (TSconnect.histQuoteDriver).

Править: От r-штамповочного-пресса я узнал желаемый вывод:

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?

11
задан John Paul 5 April 2014 в 22:53
поделиться

1 ответ

Классы S4 относительно сложны, поэтому я бы предложил , чтение этого введения .

В этом случае TSDBI является примером универсального класса S4, который расширяется всеми определенными пакетами баз данных (например, TSMYSQL, TSPOSTGRESQL и т. Д.). В TSDBI больше нет ничего более для TSConnect () в TSDBI, чем то, что вы видите: DRV = «Характер», DBName = «Персонаж» - это параметры для функции, а не функционируют и сами по себе. Если вы устанавливаете некоторые конкретные пакеты баз данных и используйте ShowMethods («TSConnect»), вы увидите все конкретные экземпляры этой функции. Если вы тогда вызовите TSConnect () с определенным драйвером базы данных, он будет и использовать соответствующую функцию.

Это как такие функции, как и сводная работа. Например, попробуйте позвонить ShowMethods (сводка) . В зависимости от того, какие пакеты загружаются, вы должны увидеть несколько методов, возвращаемых

. Вы можете легко увидеть исходный код для него на R-Forge: http://r-forge.r-project.org/g/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, ...))
10
ответ дан 3 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: