为 R 中的 S4/RC 个对象自定义控制台打印

Customize the console printing for S4/RC objects in R

在R中我们可以简单的在控制台输入变量名,控制台会自动打印出值。我创建了一个新的 S4/RC class 定义,并想创建一个更好的方法来在控制台中自动 "print"。如何为新 class 编辑控制台打印功能?

这是我在控制台中的代码:

ClassA<-setRefClass("ClassA",fields=list(value="numeric"))

"print.ClassA"<-function(object){
      cat("--------\n")
     cat(object$value,"\n")
     cat("--------\n")
}

classobject<-ClassA$new(value=100)

classobject # it doesn't print nicely in the console.
#Reference class object of class "ClassA"
#Field "value":
#[1] 100

print(classobject) # this works
#--------
#100 
#--------

我的目标是避免一直输入 "print";只需在控制台中输入对象名称,它会很好地打印出来,就像调用 print().

谢谢!

您需要为 RefClass 对象定义一个 show 方法。阅读 ?setRefClass 了解有关如何编写方法的详细信息。这有效:

#the print function: note the .self to reference the object
s<-function(){
     cat("--------\n")
     cat(.self$value,"\n")
     cat("--------\n")
}
#the class definition
ClassA<-setRefClass("ClassA",fields=list(value="numeric"),methods=list(show=s))
classobject<-ClassA$new(value=100)
classobject
#--------
#100 
#--------