如何删除除base
and之外的所有已安装软件包recommended
?
6 回答
当心!并在尝试之前阅读文档:
# Pasted as a commented to prevent blindly copying and pasting
# remove.packages( installed.packages( priority = "NA" )[,1] )
默认情况下,这将从您的.libPaths()
.
代替
更新到 R 3.0.0 并且必须重建所有包。
做就是了
update.packages(..., checkBuilt=TRUE)
这就是我在 R 3.0.0 上所做的(lib.loc=...
用来指向我不同的本地目录)。这将更新您拥有的所有内容,以及仍然可以从CRAN 等存储库中获得的所有内容。对于install_git()
等,你运气不好,需要重新安装。
但无论哪种方式,您都不需要先删除软件包。
接受的答案不再有效(R 3.6.X),但这个答案:
update.packages(checkBuilt = T, ask = F)
我们使用checkBuilt=T
它是因为它检查包是否是在旧版本下构建的并且需要重新构建(有时)。
我们之所以使用ask=F
,是因为否则我们会收到每个令人讨厌的软件包的提示。
以下是 R-Blogger 中提供的解决方案:
# create a list of all installed packages
ip <- as.data.frame(installed.packages())
head(ip)
# if you use MRO, make sure that no packages in this library will be removed
ip <- subset(ip, !grepl("MRO", ip$LibPath))
# we don't want to remove base or recommended packages either\
ip <- ip[!(ip[,"Priority"] %in% c("base", "recommended")),]
# determine the library where the packages are installed
path.lib <- unique(ip$LibPath)
# create a vector with all the names of the packages you want to remove
pkgs.to.remove <- ip[,1]
head(pkgs.to.remove)
# remove the packages
sapply(pkgs.to.remove, remove.packages, lib = path.lib)
这是原始帖子的链接:https ://www.r-bloggers.com/how-to-remove-all-user-installed-packages-in-r/
如果在 Linux 上,最简单的方法可能是删除库文件夹,该文件夹默认位于/home/yourusername/R
.
例如,在 Fedora 上,它被称为x86_64-redhat-linux-gnu-library
. 如果文件夹/home/yourusername/R/x86_64-redhat-linux-gnu-library
被删除,它会在 R 的以下启动时自动重新创建。所有默认库都定期可用。
警告,你会删除很多东西
有时卸载包不起作用,在这种情况下,您可能需要删除包所在的文件夹。假设您有权限,这可以从 R 完成。
sapply(paste(installed.packages( priority = "NA" )[, 2], installed.packages( priority = "NA" )[, 1], sep = "/"), unlink, recursive = T)
您可以通过以下方式预览要删除的路径:
sapply(paste(installed.packages( priority = "NA" )[, 2], installed.packages( priority = "NA" )[, 1], sep = "/"), identity)
这个电话:
- 获取已安装的非基础包列表
- 制作其安装路径的矢量
- 在路径上循环
- 递归删除每个文件夹