私は、どのようにしてそれが何を探しているのか(つまり、MyGeneric(x)クラスがMyClass:MyGeneric.MyClassクラスのxで呼び出された)数字がわかると、UseMethod
がメソッドを見つける方法を見つけようとしています 特に、どのような環境が関わっていますか?UseMethodの検索メカニズムについての混乱
検索メカニズムを指定していないR言語マニュアルの "5.3メソッドディスパッチ"と "5.4 UseMethod"のセクションを読んでいます。 UseMethod
ためのR-ヘルプページには、手がかりを提供しています。
...UseMethod and NextMethod search for methods in two places:
first in the environment in which the generic function is called,
and then in the registration data base for the environment
in which the generic is defined (typically a namespace)
しかし、これは(=私の頭の中で)まで追加されません。ここでは具体的な例を示します。
library(xts)
as.matrix # shows UseMethod("as.matrix")
methods("as.matrix") # shows as.matrix.xts. * indicates non-visible
showMethods("as.matrix") # says <not an S4 generic function>
data(sample_matrix)
as.matrix(as.xts(sample_matrix)) # how does R find as.matrix.xts?? its not exported!
as.matrix
はnamespace:base
で定義されています。 Rがその環境または呼び出し環境(R_GlobalEnv)を使用する場合は、エクスポートされていないのでas.matrix.xts
が見つかりませんでした。 as.matrix.xts
が呼び出し環境にあるため、xts内の関数がas.matrix
を呼び出すと呼び出し環境が動作するように見えます。私は何が欠けていますか?
これは、その部分を理解する即時の質問に、一般的に両方(同様に助けになるかもしれませんR言語マニュアルの)http://obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/ – mweylandt
mweylandt - 十分に面白い、それは私のブログ投稿です=)ジェネリックについてのセクションを追加する必要があるようです通常の検索/発見機構から逸脱した機能/方法。この物がどれくらい複雑かというと、ちょっとイライラしています。 – SFun28
それは私が思う小さな世界です;-)あなたが反論しなければ、これを跨いで他の誰かのために残しておきます。 – mweylandt