On 07/07/2015 02:05 AM, Renaud Gaujoux wrote:
Hi,
from the man page ?methods, I expected to be able to build pairs
(class,package) for a given S3 method, e.g., print, using
attr(methods(print), 'info').
However all the methods, except the ones defined in base or S4
methods, get the 'from' value "registered S3method for print", instead
of the actual package name (see below for the first rows).
Is this normal behaviour? If so, is there a way to get what I want: a
character vector mapping class to package (ideally in loading order,
but this I can re-order from search()).
It's the way it has always been, so normal in that sense.
There could be two meanings of 'from' -- the namespace in which the generic to
which the method belongs is defined, and the namespace in which the method is
defined. I think the former is what you're interested in, but the latter likely
what methods() might be modified return.
For your use case, maybe something like
.S3methodsInNamespace <- function(envir, pattern) {
mtable <- get(".__S3MethodsTable__.", envir = asNamespace(envir))
methods <- ls(mtable, pattern = pattern)
env <- vapply(methods, function(x) {
environmentName(environment(get(x, mtable)))
}, character(1))
setNames(names(env), unname(env))
}
followed by
nmspc = loadedNamespaces()
lapply(setNames(nmspc, nmspc), .S3methodsInNamespace, "^plot.")
which reveals the different meanings of 'from', e.g.,
> lapply(setNames(nmspc, nmspc), .S3methodsInNamespace, "^plot.")["graphics"]
$graphics
stats graphics stats
"plot.acf" "plot.data.frame" "plot.decomposed.ts"
graphics stats stats
"plot.default" "plot.dendrogram" "plot.density"
stats graphics graphics
"plot.ecdf" "plot.factor" "plot.formula"
graphics stats graphics
"plot.function" "plot.hclust" "plot.histogram"
stats stats stats
"plot.HoltWinters" "plot.isoreg" "plot.lm"
stats stats stats
"plot.medpolish" "plot.mlm" "plot.ppr"
stats stats stats
"plot.prcomp" "plot.princomp" "plot.profile.nls"
graphics stats stats
"plot.raster" "plot.spec" "plot.stepfun"
stats graphics stats
"plot.stl" "plot.table" "plot.ts"
stats stats
"plot.tskernel" "plot.TukeyHSD"
Also this is for loaded, rather than attached, namespaces.
Martin Morgan
Thank you.
Bests,
Renaud
visible
from generic isS4
print.abbrev FALSE registered
S3method for print print FALSE
print.acf FALSE registered
S3method for print print FALSE
print.AES FALSE registered
S3method for print print FALSE
print.agnes FALSE registered
S3method for print print FALSE
print.anova FALSE registered
S3method for print print FALSE
print.Anova FALSE registered
S3method for print print FALSE
print.anova.loglm FALSE registered
S3method for print print FALSE
print,ANY-method TRUE
base print TRUE
print.aov FALSE registered
S3method for print print FALSE
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
--
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109
Location: Arnold Building M1 B861
Phone: (206) 667-2793
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel