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?

War es hilfreich?

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
scroll top