質問

S4関数の定義をどのように表示できますか?たとえば、パッケージTSDBIのTSConnectの定義を確認したいと思います。コマンド

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は、すべての特定のデータベースパッケージ(TSMYSQL、TSPOSTGRESQLなど)によって拡張される汎用S4クラスの例です。 TSDBIのtsconnect()メソッドには、表示されているものほど何もありません。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