Wie eine S4-Methode in einem R-Paket flicken?
Frage
Wenn Sie einen Fehler in einem Paket finden, dann ist es in der Regel möglich, das Problem mit fixInNamespace
zu patchen, z.B. fixInNamespace("mean.default", "base")
.
Für S4 Methoden, ich bin nicht sicher, wie es zu tun, wenn. Die Methode, die ich freue mich auf in dem gWidgetstcltk
Paket. Sie können den Quellcode sehen mit
getMethod(".svalue", c("gTabletcltk", "guiWidgetsToolkittcltk"))
Ich kann nicht die Methoden, mit fixInNamespace
finden.
fixInNamespace(".svalue", "gWidgetstcltk")
Error in get(subx, envir = ns, inherits = FALSE) :
object '.svalue' not found
Ich dachte, setMethod
könnte den Trick tun, aber
setMethod(".svalue", c("gTabletcltk", "guiWidgetsToolkittcltk"),
definition = function (obj, toolkit, index = NULL, drop = NULL, ...)
{
widget = getWidget(obj)
sel <- unlist(strsplit(tclvalue(tcl(widget, "selection")),
" "))
if (length(sel) == 0) {
return(NA)
}
theChildren <- .allChildren(widget)
indices <- sapply(sel, function(i) match(i, theChildren))
inds <- which(visible(obj))[indices]
if (!is.null(index) && index == TRUE) {
return(inds)
}
if (missing(drop) || is.null(drop))
drop = TRUE
chosencol <- tag(obj, "chosencol")
if (drop)
return(obj[inds, chosencol, drop = drop])
else return(obj[inds, ])
},
where = "package:gWidgetstcltk"
)
Error in setMethod(".svalue", c("gTabletcltk", "guiWidgetsToolkittcltk"), :
the environment "gWidgetstcltk" is locked; cannot assign methods for function ".svalue"
Irgendwelche Ideen?
Lösung
Wie wäre es der alten Schule Weg, um die Quelle des Erhaltens, die Anwendung der Änderung und den Wiederaufbau?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow