检查当前是否附加了 r 包

Checking if an r package is currently attached

我的工作流程遇到了问题,因为我在 rmarkdown 中采购了多个脚本,其中一些需要包 dplyr,一些使用 plyr

问题是 rename 函数存在于两个包中,如果 dplyr 当前已附加,则 plyr 中的 rename 函数将不起作用。

我如何在我的脚本中包含一个函数来检查 dplyr 是否已附加,如果是,则将其分离?

我知道如何通过 detach("package:dplyr", unload = TRUE) 分离包。我不知道的是如何检查包裹是否已附加。

我同意最好的方法是使用 dplyr::renameplyr::rename 来明确调用您想要的函数。

但是,如果您确实想检查是否附加了一个包,然后将其分离,我使用

if("plyr" %in% (.packages())){
  detach("package:plyr", unload=TRUE) 
}

这里值得注意的是,包本身会警告您按特定顺序加载它们。如果你加载 dplyr,然后加载 plyr,你会得到一个警告:

You have loaded plyr after dplyr - this is likely to cause problems. If you need functions from both plyr and dplyr, please load plyr first, then dplyr: library(plyr); library(dplyr)

我的理解是,如果 dplyr 的功能被 plyr 弃用,dplyr 将无法正常工作,但由于 dplyr 从 plyr 弃用的功能有效更新,因此它们应该可以很好地发挥作用。因此,请确保以正确的顺序加载它们:

library(plyr)
library(dplyr)

编辑:我重新阅读了你的问题,你的问题是 dplyr 对 plyr 函数的弃用,所以我的观点与你不太相关,抱歉。我会把它留在这里以防其他人需要这些信息,因为它在前一段时间给我带来了问题 :P