如果已加载,则在 R 中分离特定的包
Posted
技术标签:
【中文标题】如果已加载,则在 R 中分离特定的包【英文标题】:detach specific package in R if loaded 【发布时间】:2016-04-05 13:15:15 【问题描述】:我的代码中遇到了一些plyr
与dplyr
的问题,所以我想分离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
【问题讨论】:
发生这种情况是因为detach
返回 NULL(例如,ifelse(0, 1, NULL)
),否则使用 ifelse 就可以了:例如,ifelse(sum(grepl("package:plyr",search()))==0, "plyr not loaded", detach("package:plyr"); invisible(0))
可以工作
【参考方案1】:
这里有一个解决方案:
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")
通常您希望将if
和else
用于程序控制,而ifelse()
仅用于矢量化逻辑操作,例如数据重新编码。
【讨论】:
以上是关于如果已加载,则在 R 中分离特定的包的主要内容,如果未能解决你的问题,请参考以下文章