问题
I used the packages topGO in R to analyze gene enrichment with the following code:
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)
I want to see and change the RunTest function and the GenTable function to change the ResultTable, but I don't know how to show the function. With the getAnywhere("GenTable") I do not get the hard code I want.
getAnywhere("GenTable")
A single object matching ‘GenTable’ was found
It was found in the following places
package:topGO namespace:topGOwith value
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"
How can I do this?
回答1:
Use getMethod() and specify the signature. In your case, that could be eg :
getMethod("GenTable","topGOdata")
to show the GenTable method for topGOdata objects. In this case, there is only a method defined for topGOdata objects. In case there are methods with different signatures, showMethods() will tell you which ones. In your case :
showMethods("GenTable")
# Function: GenTable (package topGO)
# object="topGOdata"
You can get the code for the signature you want by specifying it in the getMethod() function.
回答2:
I know this is an old question, but for the sake of completeness for future searchers, there's also a function called
selectMethod
that varies from getMethod in that you can use inheritance. This is how I found source for a generic function that has multiple signatures.
回答3:
Note that as of R version 2.11.0, one needs to use findMehtods(). Here is an extract from the changelog.
getMethods()is now deprecated, with its internal use replaced byfindMethods()and other changes. Creating objects from the"MethodsList"class is also deprecated.
来源:https://stackoverflow.com/questions/5937832/how-do-i-show-the-source-code-of-an-s4-function-in-a-package