r - 如何在包中顯示S4功能的源代碼?




packages (2)

我使用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"

我怎樣才能做到這一點?


使用getMethod()並指定簽名。 在你的情況下,這可能是例如:

getMethod("GenTable","topGOdata")

顯示topGOdata對象的GenTable方法。 在這種情況下,只有為topGOdata對象定義的方法。 如果有不同簽名的方法, showMethods()會告訴你哪些簽名。 在你的情況下:

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

您可以通過在getMethod()函數中指定簽名來獲取所需簽名的代碼。


我知道這是一個老問題,但為了未來搜索者的完整性,還有一個叫做的功能

selectMethod

與getMethod不同,您可以使用繼承。 這就是我找到具有多個簽名的泛型函數的源代碼的方法。





s4