16

我看过这个,但不知道怎么做。我试着写一些函数,但由于错误而失败:

卸载命名空间(x)时出错:命名空间“graphics”由“stats and other packages here”导入

然而,许多这些包甚至不在搜索列表。

[1] “.GlobalEnv”“tools:rstudio”“package:grDevices”“pacgage:utils”“pac包:数据集”[6] 包:方法“Autoloads”包:基

这是我正在使用的函数:

lapply(gsub(“包:”,“”,search()[grep(“.*(?<=包:)”,seach(),perl=T)]),函数(x)unloadNamespace(x))

无效的变体:

lapply(gsub(“包:”,“”,search()[grep(“.*(?<=包:)”,seach(),perl=T)]),函数(x)分离(x))

问题:我怎样才能最好地卸载几个包裹(如果我能卸载所有包裹,效果会更好)?

2个答案2

重置为默认值
13

卸载所有非基本包的简单解决方案:

lapply(名称(sessionInfo()$otherPkgs),函数(pkgs)分离(paste0('包装:',pkgs),character.only=T,卸载=T,力=T))
2
  • 仅供参考-它起到了作用,但它发出了一系列警告,说包裹无法卸载。然而,当我跑步时(.packages())之后,只剩下基本的R包。
    – L泰龙
    评论 2023年11月22日0:21
  • 1
    我假设有一些包在没有警告的情况下无法卸载,因为其他仍在加载的包确实需要它们。 评论 2023年11月23日15:22
8

我通常运行这样的程序来卸载所有非基本包:

detachAllPackages<-函数(){基本包装空白<-c(“统计信息”,“图形”,“gr设备”,“实用程序”,“数据集”,“方法”,“基础”)    basic.packages<-粘贴(“package:”,basic.packages.blank,sep=“”)package.list<-search()[ifelse(unlist(gregexpr(“package:”,search()))==1,TRUE,FALSE)]package.list<-setdiff(package-list,basic.packages)如果(length(package.list)>0){for(package.list中的包){分离(包,字符.only=TRUE)}   }    }分离所有包()

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.