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