質問
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, ...))