web-dev-qa-db-ja.com

S4関数のソースコードをパッケージで表示するにはどうすればよいですか?

RのパッケージtopGOを使用して、次のコードで遺伝子濃縮を分析しました。

_sampleGOdata <- new("topGOdata", description = "Simple session", ontology = "BP",
                    allGenes = geneList, geneSel = topDiffGenes, nodeSize = 10, 
                    annot = annFUN.db, affyLib = affyLib)
resultFisher <- runTest(sampleGOdata, algorithm = "classic", statistic = "fisher")
allRes <- GenTable(sampleGOdata, classicFisher = resultFisher, orderBy = "fisher", 
                   ranksOf = "classicFisher",topNodes = 10)
_

RunTest関数とGenTable関数を表示して変更してResultTableを変更したいのですが、関数の表示方法がわかりません。 getAnywhere("GenTable")を使用すると、必要なハードコードが取得されません。

_getAnywhere("GenTable")
_

「GenTable」に一致する単一のオブジェクトが見つかりました

以下の場所で発見されました

_package:topGO

namespace:topGO
_

価値のある

_function (object, ...)
standardGeneric("GenTable")
<environment: 0x16a30c10>
attr(,"generic")
[1] "GenTable"
attr(,"generic")attr(,"package")
[1] "topGO"
attr(,"package")
[1] "topGO"
attr(,"group")
list()
attr(,"valueClass")
character(0)
attr(,"signature")
[1] "object"
attr(,"default")
`NULL`
attr(,"skeleton")
function (object, ...)
stop("invalid call in method dispatch to \"GenTable\" (no default method)",
domain = NA)(object, ...)
attr(,"class")
[1] "standardGeneric"
attr(,"class")attr(,"package")
[1] "methods"
_

これどうやってするの?

36
Lisann

getMethod()を使用して、署名を指定します。あなたの場合、それは例えば:

_getMethod("GenTable","topGOdata")
_

topGOdataオブジェクトのGenTableメソッドを表示します。この場合、topGOdataオブジェクトに対して定義されたメソッドのみがあります。異なるシグネチャを持つメソッドがある場合、showMethods()はどのメソッドを教えてくれます。あなたの場合:

_showMethods("GenTable")
# Function: GenTable (package topGO)
# object="topGOdata"
_

getMethod()関数で指定することにより、必要な署名のコードを取得できます。

33
Joris Meys

これは古い質問ですが、将来の検索者のために、次の機能もあります。

selectMethod

これは、継承を使用できるという点でgetMethodとは異なります。これが、複数のシグネチャを持つジェネリック関数のソースを見つけた方法です。

12
nsheff

Rバージョン_2.11.0_の時点では、findMehtods()を使用する必要があることに注意してください。これが変更ログからの抜粋です。

getMethods()は非推奨になり、内部使用はfindMethods()およびその他の変更に置き換えられました。 _"MethodsList"_クラスからのオブジェクトの作成も非推奨です。

0
Charles Plessy