Question Comment afficher le code source d'une fonction S4 dans un package?


J'ai utilisé les paquets topGO dans R pour analyser l'enrichissement des gènes avec le code suivant:

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)

Je veux voir et changer le RunTest la fonction et la GenTable fonction de changer le ResultTable, mais je ne sais pas comment montrer la fonction. Avec le getAnywhere("GenTable") Je ne reçois pas le code dur que je veux.

getAnywhere("GenTable")

Un seul objet correspondant à 'GenTable' a été trouvé

Il a été trouvé dans les endroits suivants

package:topGO

namespace:topGO

avec valeur

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"

Comment puis-je faire ceci?


34
2018-05-09 13:52


origine


Réponses:


Utilisation getMethod() et spécifiez la signature. Dans votre cas, cela pourrait être par exemple:

getMethod("GenTable","topGOdata")

pour afficher la méthode GenTable pour les objets topGOdata. Dans ce cas, il existe uniquement une méthode définie pour les objets topGOdata. Dans le cas où il existe des méthodes avec des signatures différentes, showMethods() vous dira lesquels. Dans ton cas :

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

Vous pouvez obtenir le code de la signature que vous souhaitez en le spécifiant dans le getMethod() fonction.


30
2018-05-09 14:23



Je sais que c'est une vieille question, mais par souci d'exhaustivité pour les futurs chercheurs, il y a aussi une fonction appelée

selectMethod

cela varie de getMethod en ce sens que vous pouvez utiliser l'héritage. C'est ainsi que j'ai trouvé la source d'une fonction générique comportant plusieurs signatures.


12
2018-04-06 14:26



Notez qu'à partir de la version R 2.11.0, il faut utiliser findMehtods(). Voici un extrait du changelog.

getMethods() est maintenant obsolète, son utilisation interne remplacée   par findMethods() et d'autres changements. Créer des objets à partir du    "MethodsList" la classe est également déconseillée.


0
2017-08-24 03:59