Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
408 views
in Technique[技术] by (71.8m points)

r - How do I show the source code of an S4 function in a package?

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:topGO

with 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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...