Как исправить метод S4 в пакете R? - PullRequest
0 голосов
/ 14 мая 2010

Если вы нашли ошибку в пакете, обычно можно исправить проблему с помощью fixInNamespace, например, fixInNamespace("mean.default", "base").

Для методов S4 я не уверен, как это сделать.Метод, который я рассматриваю, находится в пакете gWidgetstcltk.Вы можете увидеть исходный код с

getMethod(".svalue", c("gTabletcltk", "guiWidgetsToolkittcltk"))

Я не могу найти методы с fixInNamespace.

fixInNamespace(".svalue", "gWidgetstcltk")

Error in get(subx, envir = ns, inherits = FALSE) : 
  object '.svalue' not found

Я думал, что setMethod может сработать, но

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"

Есть идеи?

1 Ответ

1 голос
/ 14 мая 2010

Как насчет старой школы, чтобы получить источник, применить изменения и перестроить?

...