1

我正在开发的包中使用 R6 包进行 OO 编程。我的 R6 对象存储数据框以及其他信息。在我的 R6 对象上调用时,我想覆盖 data.frame() 函数,以便返回其存储的数据帧。

这可能吗?

例如:

library(R6)

myobj <- R6Class("myobj", list(
  df = NULL,
  args = NULL,
  initialize = function(df, args=NULL) {
    self$df <- df
    self$args <- args
  },
  print = function(...) {
    cat("myobj: \n")
    cat("  df: ", nrow(self$df), " x ", ncol(self$df), "\n")
    invisible(self)
  },
  data.frame = function(...) {
    self$df
  }
))

print(myobj) # works
df <- data.frame(myobj) # does not work

我已经阅读了 R6 文档,我想我很困惑我们如何覆盖 print 而不是在 R6 对象上调用的其他函数。

4

0 回答 0