1

開発中のパッケージでオブジェクト指向プログラミングに R6 パッケージを使用しています。私の 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 のドキュメントを読んだことがありますが、R6 オブジェクトで呼び出される他の関数ではなく print をオーバーライドする方法について混乱していると思います。

4

0 に答える 0