2012-04-26 3 views
1

R에서 S4 클래스 생성과 관련하여 질문이 있습니다. "setClass"함수에는 생성 된 클래스의 메타 데이터 이 저장되어야하는 위치를 정의하는 명명 된 속성이 있습니다. 매뉴얼에. 나는R : 클래스 메타 데이터 위치

> en <- new.env(parent=emptyenv()) 
> setClass("A", representation(x="numeric"), where=en) 
[1] "A" 
Warning message: 
In getPackageName(where) : 
    Created a package name, "2012-04-26 12:56:39", when none found 

을 다음과 같이하면

그러나, 나는

> rm(en) 

를 사용하는 도중 삭제할 수 있습니다 여전히, 예를 클래스를 사용할 수 있어요

> new("A", x=1) 
An object of class "A" 
Slot "x": 
[1] 1 

왜 그렇습니까? 사전에


감사합니다,

스벤

답변

1

는 방법 패키지는 어쩌면 효율 (클래스 룩업) 이유로, methods:::.classTable에서 클래스 정의를 캐시합니다. removeClass("A", where=en)은 캐싱 된 버전과 정의를 모두 제거합니다 (가짜 경고를 생성 함).

+0

정보 주셔서 감사합니다;) –