删除所有未附带R的软件包

时间:2013-05-05 08:13:23

标签: r package

如何删除除baserecommended以外的所有已安装软件包?

6 个答案:

答案 0 :(得分:18)

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

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

默认情况下,这会从.libPaths()中的第一个库中删除包。

答案 1 :(得分:13)

而不是

  

已更新至R 3.0.0并且必须重建所有软件包。

只是做

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

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

但无论如何,都需要先删除软件包。

答案 2 :(得分:5)

已接受的答案不再起作用(R 3.6.X),但是此答案有效:

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

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

我们使用ask=F是因为否则我们会收到每个令人讨厌的包裹的提示。

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

答案 5 :(得分: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)

此电话:

  • 获取已安装的非基本软件包的列表
  • 对安装路径进行矢量化
  • 环绕路径
  • 递归删除每个文件夹