R:类元数据位置

  • 本文关键字:位置 元数据 r 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  

为什么?

提前感谢,

斯文

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

最新更新