2017-01-18 14 views
1

Rでは、変数名をコンソールに入力するだけでコンソールが自動的に値を出力します。私は新しいS4/RCクラスの定義を作成し、コンソールに自動的に "印刷"するより良い方法を作りたいと思っています。新しいクラスのコンソール印刷機能を編集するにはどうすればよいですか?ここで S4/RCオブジェクトのコンソール印刷をカスタマイズするR

は、コンソールでの私のコードです:

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

関連する問題