RStudio中的包冲突,分离()无法工作

Posted

技术标签:

【中文标题】RStudio中的包冲突,分离()无法工作【英文标题】:Conflict of Packages in RStudio, detach() fails to work 【发布时间】:2018-01-07 10:28:58 【问题描述】:

我目前正在对 R 中的 'birthwt' 数据集进行逻辑回归。此数据可在包 'MASS' 中找到。

但是,当我使用library(MASS) 检索数据时,它会从 dplyr 包中屏蔽select() 的功能。我在分析中几乎立即使用了这个函数。

加载数据后,我尝试detach("package:MASS", unload = TRUE)

但我遇到了‘MASS’ namespace cannot be unloaded: namespace ‘MASS’ is imported by ‘pbkrtest’, ‘car’, ‘lme4’ so cannot be unloaded

我真的很想解决这个问题,因为我已经完成了对数据的所有必要分析,但在尝试编织时遇到了这个问题。

提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

您不应该选择unload = TRUE。默认是unload = FALSE,这就是你需要的。

解释如下:

在 R 中,可以“加载”包,这使得它们可用于从它们导入函数的其他包。它们也可以“附加”,将它们放在搜索列表中,以便在控制台中的用户可以使用它们。如果附加了一个包,则需要加载它,但反之则不然。

所以如果你运行detach("package:MASS"),你会将它从搜索列表中删除,并且在控制台中,运行select() 将不再在MASS 中找到该函数。它仍将被加载,因此可供其他需要它的包使用。

顺便说一句,使用前缀形式 MASS::select()dplyr::select() 将有效,无论其中一个或两个包是否在您的搜索列表中。

【讨论】:

感谢您的回复!我试过dplyr::select() 并且工作得很好!

以上是关于RStudio中的包冲突,分离()无法工作的主要内容,如果未能解决你的问题,请参考以下文章

如何解决包冲突问题

如何解决包冲突问题

解决 Flash Builder 中的包名称冲突

如何解决包冲突问题

记一次jar包冲突

conda:发现冲突的包,但只列出了一个包。这是什么意思?