R:类元数据位置

时间:2012-04-26 11:06:38

标签: r s4

我有一个与在R中创建S4类相关的问题。 “setClass”函数有一个命名属性“where”,用于定义元数据的位置 根据手册,应该存储已创建的类。

但是,如果我执行以下操作

> 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

我可以使用

删除en
> rm(en)

我仍然能够使用该类,例如与

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

为什么?


提前谢谢,

斯文

1 个答案:

答案 0 :(得分:1)

方法包将类定义缓存在methods:::.classTable中,可能是为了提高效率(查找类)的原因。 removeClass("A", where=en)将删除缓存版本和定义(虽然生成虚假警告)。