2017-01-18 88 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