如果已加载,则分离 R 中的特定包

detach specific package in R if loaded

我在我的代码中遇到了一些 plyrdplyr 的问题,所以 我想分离 plyr 包以防它被之前加载。

这就是我的进展,

ifelse(sum(grepl("package:plyr",search()))==0,
       "plyr not loaded",
       detach("package:plyr"))

但是这段代码抛出一个

Error in ifelse(sum(grepl("package:plyr", search())) == 0, 
"plyr not    loaded",  : 
substitution has length 0 
Additional warning:
In rep(no, length.out = length(ans)) :
'x' is NULL so the result will be NULL

这是一个解决方案:

if(any(grepl("package:plyr", search()))) detach("package:plyr") else message("plyr not loaded")
## plyr not loaded
library("plyr")
## if(any(grepl("package:plyr", search()))) detach("package:plyr") else message("plyr not loaded")

通常您希望使用 ifelse 进行程序控制,而 ifelse() 仅用于矢量化逻辑操作,例如数据重新编码。