From PLRoebuck at mdanderson.org  Wed Jan 28 18:02:29 2015
From: PLRoebuck at mdanderson.org (Roebuck,Paul L)
Date: Wed, 28 Jan 2015 17:02:29 +0000
Subject: [Rd] [Q] Get formal arguments of my implemented S4 method
Message-ID: <D0EE7317.B896E%proebuck@mdanderson.org>

Interrogating some (of my own) code in another package.

>norm.meth <- getMethod("normalize", "MatrixLike")
>message("str(norm.meth)")
>str(norm.meth)

>message("show(norm.meth at .Data)")
>show(norm.meth at .Data)


Last show() displays this:

function (object, ...)
{
    .local <- function (object, method = c("median", "vs", "tukey"),
        calc.medians = TRUE, sweep.cols = calc.medians,
        recalc.after.sweep = sweep.cols, ...)
    {
        .do_normalize(object,
            method = match.arg(method),
            calc.medians = calc.medians,
            sweep.cols = sweep.cols,
            recalc.after.sweep = recalc.after.sweep,
            ...)
    }
    .local(object, ...)
}


Desire to be able to access formals() for the .local() function definition,
not the generic one. Have seen information desired available via "defined"
slot of returned 'MethodDefinition' object, but not using the code below.



====================

library(methods)

if (!isGeneric("normalize")) {
    ## Other packages also define this generic...
    setGeneric("normalize",
               function(object, ...) standardGeneric("normalize"))
}

setClassUnion("MatrixLike", c("matrix", "data.frame"))

.do_normalize <- function(concs,
                          method,
                          calc.medians,
                          sweep.cols,
                          recalc.after.sweep,
                          ...) {
    message("internal routine called!")
    NULL
}

setMethod("normalize", signature(object="MatrixLike"),
          function(object,
                   method=c("median", "vs", "tukey"),
                   calc.medians=TRUE,
                   sweep.cols=calc.medians,
                   recalc.after.sweep=sweep.cols,
                   ...) {

    .do_normalize <- function(object,
                            method=match.arg(method),
                            calc.medians=calc.medians,
                            sweep.cols=sweep.cols,
                            recalc.after.sweep=recalc.after.sweep,
                            ...)
}



[Rd] [Q] Get formal arguments of my implemented S4 method
Roebuck,Paul L