Как показать исходный код функции S4 в пакете?
Я использовал пакеты topGO в R для анализа обогащения гена следующим кодом:
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"
Как я могу это сделать?
Ответы
Ответ 1
Используйте getMethod()
и укажите подпись. В вашем случае это может быть:
getMethod("GenTable","topGOdata")
чтобы показать метод GenTable для объектов topGOdata. В этом случае существует только метод, определенный для объектов topGOdata. Если есть методы с разными сигнатурами, showMethods()
расскажет вам, какие из них. В вашем случае:
showMethods("GenTable")
# Function: GenTable (package topGO)
# object="topGOdata"
Вы можете получить код для нужной вам подписи, указав его в функции getMethod()
.
Ответ 2
Я знаю, что это старый вопрос, но для полноты будущих поисковиков существует также функция под названием
selectMethod
который отличается от метода getMethod тем, что вы можете использовать наследование. Вот как я нашел источник для общей функции с несколькими сигнатурами.
Ответ 3
Обратите внимание, что с версии R 2.11.0
нужно использовать findMehtods()
. Вот выдержка из журнала изменений.
getMethods()
теперь устарел, поскольку его внутреннее использование заменено на findMethods()
и другие изменения. Создание объектов из "MethodsList"
класс также устарел.