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

Posted

技术标签:

【中文标题】如何从 R 中的特定包中分离所有对象和方法? [复制]【英文标题】:How do I detach all objects and methods from a specific package in R? [duplicate] 【发布时间】:2016-03-16 19:06:46 【问题描述】:

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

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

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

【问题讨论】:

使用 packrat ***.com/questions/24283171/virtual-environment-in-r 试试detach('package:pomp', unload = TRUE, character.only = TRUE) devtools::unload(pkg = "pomp")unload 的帮助提供了一些关于 S4 课程为什么会遇到困难的信息。 我想尽可能只使用基本 R 函数,所以我宁愿不使用 devtools::unload,但 detachunload 选项似乎正在工作。 @ialm 如果您将其作为答案提交,我可以接受。 【参考方案1】:

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

在你的例子中:

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

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

如果一个包有一个命名空间,默认情况下分离它不会卸载 命名空间(甚至可能没有 unload = TRUE),并分离 通常不会卸载任何动态加载的编译代码 (DLL)。此外,来自命名空间的注册 S3 方法将不会 删除。如果你在一个加载了命名空间的包上使用库,它 附加已加载命名空间的导出。如此分离和 重新附加一个包可能不会刷新部分或所有组件 包,不建议使用。

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

【讨论】:

以上是关于如何从 R 中的特定包中分离所有对象和方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式从数据框中分离数字?

如何从 PySpark DataFrame 的列中分离特定字符并使用它们形成一个新列?

OpenCV 从网络摄像头流中分离出剪影

如何在单个 TCP 数据包中从不同文件中分离数据?

使用 Parse with iOS 从 PFGeopoint 中分离纬度和经度

如何在 JPA 中分离关联对象