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

时间:2017-01-18 18:47:06

标签: r printf s4 reference-class

在R中我们只需在控制台中键入变量名称,控制台就会自动打印出值。我创建了一个新的S4 / RC类定义,并希望创建一种在控制台中自动“打印”的更好方法。如何编辑新类的控制台打印功能?

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

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()

一样

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要为show对象定义RefClass方法。有关如何编写方法的详细信息,请阅读?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 
#--------