如何从 R 中的特定包中分离所有对象和方法?

How do I detach all objects and methods from a specific package in R?

我需要在一个 R 会话中加载和分离很多包(我正在查看哪些函数是跨不同包的方法)。 detach() 对我想要的不起作用,因为它不会从环境中删除所有内容;例如,如果您 运行:

require(pomp)
detach('package:pomp', character.only = TRUE)
print(methods('show'))

仍然列出了 show,pomp.fun-method,这不是基础 R 中存在的方法。如何删除与包关联的 所有 方法和对象?或者,有没有办法在 R 中创建一个临时环境来加载包,然后我可以销毁它以删除包中方法中的所有对象?

要尝试卸载加载包时加载的命名空间,您必须在 detach() 中设置参数 unload = TRUE

在你的例子中:

detach('package:pomp', unload = TRUE, character.only = TRUE)

但是,如果您阅读了文档中的详细信息 (?detach),则需要注意一些事项:

If a package has a namespace, detaching it does not by default unload the namespace (and may not even with unload = TRUE), and detaching will not in general unload any dynamically loaded compiled code (DLLs). Further, registered S3 methods from the namespace will not be removed. If you use library on a package whose namespace is loaded, it attaches the exports of the already loaded namespace. So detaching and re-attaching a package may not refresh some or all components of the package, and is inadvisable.

强调我的。请注意它可能并不总是有效。