在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()
。
谢谢!
答案 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
#--------