Frage

Wie kann ich die Definition einer S4 -Funktion betrachten? Zum Beispiel möchte ich die Definition von TsConnect in Package TSDBI sehen. Der Befehl

showMethods("TSconnect")

zeigt, dass es unter anderem eine Funktion für DRV = "histQuotedRiver", dbname = "Charakter" gibt.

Wie kann ich die Definition dieser Funktion sehen? Wenn es eine S3 -Funktion wäre, würde es nur das erste Argument geben, das definierbar ist (DRV), das mit Druck (tsconnect.histquotedRiver) inspiziert werden könnte.

Bearbeiten: Von R-Forge fand ich die gewünschte Ausgabe heraus:

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

Gibt es eine Möglichkeit, diese Definition innerhalb einer R -Sitzung zu erhalten?

War es hilfreich?

Lösung

S4 -Klassen sind relativ kompliziert, also würde ich vorschlagen Lesen dieser Einführung.

In diesem Fall ist TSDBI ein Beispiel für eine generische S4 -Klasse, die von allen spezifischen Datenbankenpaketen erweitert wird (z. B. TSMYSQL, TSpostgresql usw.). Die TsConnect () -Methode in TSDBI hat nichts mehr als das, was Sie sehen: DRV = "Charakter", dbname = "Zeichen" sind Parameter für die Funktion, nicht Funktionen für sich. Wenn Sie einige der spezifischen Datenbankpakete installieren und ShowMethods ("TsConnect") verwenden, werden alle spezifischen Instanzen dieser Funktion angezeigt. Wenn Sie dann TsConnect () mit einem bestimmten Datenbanktreiber aufrufen, wird die entsprechende Funktion verwendet.

So funktionieren auch Funktionen wie zusammenfassende. Versuchen Sie beispielsweise anzurufen showMethods(summary). Je nachdem, welche Pakete geladen sind, sollten Sie mehrere zurückgegebene Methoden sehen

Sie können den Quellcode auf R-Forge leicht sehen: http://r-forge.r-project.org/plugins/scmsvn/viewcvs.php/pkg/tsdbi/r/tsdbi.r?rev=70&root=tsdbi&view=markup. Dies ist das Ausmaß dieser Funktion:

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

setMethod("TSconnect",   signature(drv="character", dbname="character"),
   definition=function(drv, dbname, ...)
             TSconnect(dbDriver(drv), dbname=dbname, ...))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top