假设我有一个MyClass类,定义如下:

setClass(
    "MyClass",
    slots = c(message = "character"),
    validity = function(object) { T })

如果创建它的实例,inherits可以按预期工作:
myInstance <- new("MyClass", message = "Hello")

inherits(myInstance, "MyClass")

真正

但是,在将实例放入环境并再次将其重新带回之后,它不起作用:
e <- new.env(hash = T, parent = emptyenv())

assign("MyInstance", myInstance, envir = e)

inherits(mget("MyInstance", envir = e), "MyClass")



但是数据仍然存在:
mget("MyInstance", envir = e)

$ MyInstance
类“MyClass”的对象
广告位“消息”:
[1]“你好”

即使在环境之间保存和加载实例时,如何告诉R维护我的S4类?

最佳答案

mget返回所请求对象的命名列表。您实际上正在检查列表。要检查对象,您需要从mget的输出中提取它。或者,只需使用get即可,它仅返回感兴趣的对象。
mget在请求一堆对象时很有用,但是如果您只想要一个对象,那么get就可以了。

09-03 18:23