24

如何删除除baseand之外的所有已安装软件包recommended

4

6 回答 6

27

当心!并在尝试之前阅读文档:

# Pasted as a commented to prevent blindly copying and pasting
# remove.packages( installed.packages( priority = "NA" )[,1] )

默认情况下,这将从您的.libPaths().

于 2013-05-05T08:28:15.140 回答
22

代替

更新到 R 3.0.0 并且必须重建所有包。

做就是了

update.packages(..., checkBuilt=TRUE)

这就是我在 R 3.0.0 上所做的(lib.loc=...用来指向我不同的本地目录)。这将更新您拥有的所有内容,以及仍然可以从CRAN 等存储库中获得的所有内容。对于install_git()等,你运气不好,需要重新安装。

但无论哪种方式,您都不需要先删除软件包。

于 2013-05-05T12:05:44.453 回答
8

接受的答案不再有效(R 3.6.X),但这个答案:

update.packages(checkBuilt = T, ask = F)

我们使用checkBuilt=T它是因为它检查包是否是在旧版本下构建的并且需要重新构建(有时)。

我们之所以使用ask=F,是因为否则我们会收到每个令人讨厌的软件包的提示。

于 2020-02-14T20:29:23.867 回答
3

以下是 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/

于 2018-08-16T15:32:49.900 回答
2

如果在 Linux 上,最简单的方法可能是删除库文件夹,该文件夹默认位于/home/yourusername/R.

例如,在 Fedora 上,它被称为x86_64-redhat-linux-gnu-library. 如果文件夹/home/yourusername/R/x86_64-redhat-linux-gnu-library被删除,它会在 R 的以下启动时自动重新创建。所有默认库都定期可用。

于 2016-06-24T04:41:40.897 回答
0

警告,你会删除很多东西

有时卸载包不起作用,在这种情况下,您可能需要删除包所在的文件夹。假设您有权限,这可以从 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)

这个电话:

  • 获取已安装的非基础包列表
  • 制作其安装路径的矢量
  • 在路径上循环
  • 递归删除每个文件夹
于 2020-02-15T11:47:19.217 回答