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

ha5z0ras  于 2023-06-19  发布在  其他
关注(0)|答案(6)|浏览(137)

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

4ngedf3f

4ngedf3f1#

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

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

默认情况下,这将从.libPaths()中的第一个库中删除包。否则,您可以为remove.packages()指定以下参数:

, lib = .libPaths()[1]
f1tvaqid

f1tvaqid2#

而不是
更新到R 3.0.0,并且必须重新构建所有软件包。
就做

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

这就是我在R3.0.0上所做的(使用lib.loc=...指向不同的本地目录)。这将更新您拥有的所有内容 *,并且它仍然可以从repos *(如CRAN)中获取。对于install_git()等,你运气不好,需要重新安装。
但无论哪种方式,您都不需要首先删除软件包。

wmomyfyw

wmomyfyw3#

接受的答案不再起作用(R 3.6.X),但这个答案起作用:

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

我们使用checkBuilt=T,因为它检查包是否是在旧版本下构建的,需要重新构建(有时)。
我们使用ask=F,因为否则我们会得到每个包的提示,这很烦人。

hjzp0vay

hjzp0vay4#

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

1l5u6lss

1l5u6lss5#

如果在Linux上,最简单的方法可能是删除库文件夹,默认情况下,该文件夹位于/home/yourusername/R中。
例如,在Fedora上,它被称为x86_64-redhat-linux-gnu-library。如果文件夹/home/yourusername/R/x86_64-redhat-linux-gnu-library被删除,它将在以下R开头自动重新创建。所有默认库都定期可用。

c0vxltue

c0vxltue6#

警告,您将删除大量内容

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

此呼叫:

  • 获取已安装的非基包的列表
  • 生成其已安装路径的矢量
  • 在路径上循环
  • 递归删除每个文件夹

相关问题