2012-04-26 52 views
1

我有一個與創建R中S4類相關的問題。 「setClass」函數具有一個命名屬性「where」,它定義創建的類的元數據 應存儲在哪裏,根據到手冊。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

謝謝您的信息;) – 2012-04-26 14:56:33