【发布时间】:2014-11-16 16:41:49
【问题描述】:
我最近对 S4 类进行了很多试验,为了从我的工作区中清除所有类定义和自定义方法,重新启动 R 是一件很痛苦的事情。显然rm(list=ls(all.names=TRUE)) 没有用。我可以逐行逐行手动删除所有类和方法,但我相信一定有更简单的方法。
一个展示我的问题的例子:
.myClass <- setClass("myClass", representation=representation(mySlot="numeric"))
mySlot <- function(x) x@mySlot
setMethod("[", signature=c("myClass", "numeric", "missing"), function(x, i, j, ...) {
initialize(x, mySlot=mySlot(x)[i])
})
尝试使用rm() 删除所有内容:
rm(list=ls(all.names=TRUE))
但是,类定义和自定义方法仍然存在:
> x <- new("myClass", mySlot=1:4)
> x[1]
Error in x[1] : could not find function "mySlot"
由于mySlot() 是一个对象,它被rm 删除,但引用mySlot() 的方法仍然存在。我想知道如何一举移除所有类和所有自定义方法。
【问题讨论】:
-
类可以被删除,AFAIK,使用 removeClass()。但是,我不知道在您的情况下自动化它的好方法。如果你有一个类名列表,你可以遍历它并使用 removeClass() 删除这些类。