2017-01-18 34 views
1

在R中,我们可以简单地在控制台中键入变量名称,控制台将自动打印出该值。我创建了一个新的S4/RC类定义,并希望创建一个更好的方式在控制台中自动“打印”。如何编辑新班级的控制台打印功能?为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()一样。

谢谢!

回答

2

您需要为您的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 
#-------- 
+0

谢谢!它完全有效 – chl111