[R] See source code for survplot function in Design package

Marc Schwartz marc_schwartz at comcast.net
Thu Feb 5 19:03:37 CET 2009


on 02/05/2009 10:54 AM Eleni Rapsomaniki wrote:
> Dear R users,
> 
> I know one way to see the code for a hidden function, say function_x, is
> using default.function_x (e.g. summary.default). But how can I see the
> code for imported packages that have no namespace (in this case Design)?
> 
> Many Thanks
> Eleni

The easiest way is probably to use getAnywhere():

library(Design)

> getAnywhere("survplot")
A single object matching ‘survplot’ was found
It was found in the following places
  package:Design
with value

function (fit, ...)
UseMethod("survplot")


This tells you that the function is in package Design and has certain
dispatch methods associated with it. There is also the absence of any
indication of a namespace being present.

The next step would be:

> methods(survplot)
[1] survplot.Design
[2] survplot.residuals.psm.censored.normalized
[3] survplot.survfit

which tells you which methods are present for the function. Note also
that there is no 'default' method.

Note that the methods for survplot() are not hidden within a namespace,
as they would normally be followed by a '*' in the output of methods().
Had this been the case, you could use:

  Design:::survplot.Design


Thus, you can just use:

> survplot.Design
function (fit, ..., xlim, ylim = if (loglog) c(-5, 1.5) else if (what ==
    "survival" & missing(fun)) c(0, 1), xlab, ylab, time.inc,
    what = c("survival", "hazard"), type = c("tsiatis", "kaplan-meier"),
    conf.type = c("log-log", "log", "plain", "none"), conf.int = FALSE,
    conf = c("bars", "bands"), add = FALSE, label.curves = TRUE,
    abbrev.label = FALSE, lty, lwd = par("lwd"), col = 1, adj.subtitle,
    loglog = FALSE, fun, n.risk = FALSE, logt = FALSE, dots = FALSE,
    dotsize = 0.003, grid = FALSE, srt.n.risk = 0, sep.n.risk = 0.056,
    adj.n.risk = 1, y.n.risk, cex.n.risk = 0.6, pr = FALSE)
{
    what <- match.arg(what)
    if (.R.)
        ylim <- ylim
    type <- match.arg(type)
    conf.type <- match.arg(conf.type)
    conf <- match.arg(conf)
    psmfit <- inherits(fit, "psm") || (length(fit$fitFunction) &&
        any(fit$fitFunction == "psm"))
    if (what == "hazard" && !psmfit)
        stop("what=\"hazard\" may only be used for fits from psm")
    if (what == "hazard" & conf.int > 0) {
        warning("conf.int may only be used with what=\"survival\"")
        conf.int <- FALSE
    }
...


and the same for the other methods for the function.

In general, for methods that are within a namespace, you can use:

  namespace:::function.method

or:

  getAnywhere("function.method")


See ?getAnywhere and ?methods

HTH,

Marc Schwartz



More information about the R-help mailing list