Question

Comment puis-je afficher la définition d'une fonction S4? Par exemple, j'aimerais voir la définition de TSConnect dans Package TSDBI. La commande

showMethods("TSconnect")

révèle qu'il existe, entre autres, une fonction pour DRV = "HistQuotedriver", dbname = "caractère".

Comment puis-je voir la définition de cette fonction? S'il s'agissait d'une fonction S3, il n'y aurait que le premier argument définissable (DRV), qui pourrait être inspecté par l'impression (tSconnect.HistQuoteDriver).

Éditer: De R-Forge, j'ai découvert la sortie souhaitée:

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

Existe-t-il un moyen d'obtenir cette définition à partir d'une session R?

Était-ce utile?

La solution

Les classes S4 sont relativement compliquées, donc je suggère Lire cette introduction.

Dans ce cas, TSDBI est un exemple de classe S4 générique qui est étendu par tous les packages de bases de données spécifiques (par exemple TSMYSQL, TSPOSTRESQL, etc.). Il n'y a rien de plus dans la méthode tsconnect () dans tsdBi que ce que vous voyez: drv = "caractère", dbname = "caractère" sont des paramètres de la fonction, et non des fonctions en soi. Si vous installez certains des packages de base de données spécifiques et utilisez ShowMethods ("tsconnect"), vous verrez toutes les instances spécifiques de cette fonction. Si vous appelez ensuite TSConnect () avec un pilote de base de données spécifique, il ira utiliser la fonction appropriée.

C'est ainsi que les fonctions telles que le résumé du fonctionnement. Par exemple, essayez d'appeler showMethods(summary). Selon les packages chargés, vous devriez voir plusieurs méthodes renvoyées

Vous pouvez facilement voir le code source pour lui sur R-Forge: http://r-forge.r-project.org/plugins/scmsvn/viewcvs.php/pkg/tsdbi/r/tsdbi.r?rev=70&root=tsdbi&view=markup. C'est l'étendue de cette fonction:

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

setMethod("TSconnect",   signature(drv="character", dbname="character"),
   definition=function(drv, dbname, ...)
             TSconnect(dbDriver(drv), dbname=dbname, ...))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top