我希望卸载一个包而不必重新启动R(主要是因为在尝试不同的、冲突的包时重新启动R会令人沮丧,但可以想象,这可以在程序中使用一个函数,然后使用另一个函数——尽管名称空间引用可能是更好的使用方法)。
?库没有显示任何卸载包的选项。
有一个建议detach可以卸载包,但以下两个都失败:
detach(vegan)
分离错误(纯素):无效的名称参数
detach("vegan")
分离错误("vegan"):无效的名称参数
那我怎么卸货呢?
我希望卸载一个包而不必重新启动R(主要是因为在尝试不同的、冲突的包时重新启动R会令人沮丧,但可以想象,这可以在程序中使用一个函数,然后使用另一个函数——尽管名称空间引用可能是更好的使用方法)。
?库没有显示任何卸载包的选项。
有一个建议detach可以卸载包,但以下两个都失败:
detach(vegan)
分离错误(纯素):无效的名称参数
detach("vegan")
分离错误("vegan"):无效的名称参数
那我怎么卸货呢?
当前回答
还要注意,您只能使用unload()一次。如果你在没有重新运行library()的情况下再次使用它,你会得到一个信息量不大的错误消息无效的'name'参数:
library(vegan)
#> Loading required package: permute
#> Loading required package: lattice
#> This is vegan 2.5-6
detach("package:vegan", unload=TRUE)
detach("package:vegan", unload=TRUE)
#> Error in detach("package:vegan", unload = TRUE): invalid 'name' argument
由reprex包于2020-05-09创建(v0.3.0)
其他回答
我尝试了kohske写的答案,我又得到了错误,所以我做了一些搜索,发现这对我有用(R 3.0.2):
require(splines) # package
detach(package:splines)
或者还
library(splines)
pkg <- "package:splines"
detach(pkg, character.only = TRUE)
还要注意,您只能使用unload()一次。如果你在没有重新运行library()的情况下再次使用它,你会得到一个信息量不大的错误消息无效的'name'参数:
library(vegan)
#> Loading required package: permute
#> Loading required package: lattice
#> This is vegan 2.5-6
detach("package:vegan", unload=TRUE)
detach("package:vegan", unload=TRUE)
#> Error in detach("package:vegan", unload = TRUE): invalid 'name' argument
由reprex包于2020-05-09创建(v0.3.0)
您可以取消RStudio(包)中的复选框按钮。
另一个选择是
devtools::unload("your-package")
这显然也处理了未使用unloadNamespace()删除的已注册S3方法的问题。
试试这个(详见detach):
detach("package:vegan", unload=TRUE)
可以一次加载一个包的多个版本(例如,如果您在不同的库中有一个开发版本和一个稳定版本)。要确保所有副本都被分离,请使用此函数。
detach_package <- function(pkg, character.only = FALSE)
{
if(!character.only)
{
pkg <- deparse(substitute(pkg))
}
search_item <- paste("package", pkg, sep = ":")
while(search_item %in% search())
{
detach(search_item, unload = TRUE, character.only = TRUE)
}
}
例如,用法是
detach_package(vegan)
or
detach_package("vegan", TRUE)