R - 无法卸载包



嗨,我卸载了一个软件包,但它看起来仍然可以访问,有人可以帮忙吗?谢谢!

> remove.packages("RODBC")
Removing package from ‘E:/R/R-3.3.3/library’
(as ‘lib’ is unspecified)
> library(RODBC)
# no error. it's still there
> attr(sessionInfo()$otherPkgs$RODBC, "file")
[1] "E:/R/R-3.3.3/library/RODBC/Meta/package.rds"
# it really is there...

> remove.packages("dplyr")
Removing package from ‘E:/R/R-3.3.3/library’
(as ‘lib’ is unspecified)
> library(dplyr)
Error in library(dplyr) : there is no package called ‘dplyr’
# this guy is removed

> .Library
[1] "E:/R/R-3.3.3/library"
> .libPaths()
[1] "E:/R/R-3.3.3/library"

是否有可能正在使用RODBC包,因此无法删除?

这以前发生在我身上,我认为我所做的就是从计算机上的文件资源管理器中找到包的文件夹并手动删除它

可能的原因

为什么会发生这种情况可能有很多原因。

就我而言,remove.packages("somepackagehere")不起作用,因为我正在使用的当前系统用户对我要卸载的软件包没有write权限。因此,这是有多个用户使用 R 的计算机/计算机的可能原因。

检查包的位置

这可以通过在 R 控制台中发出语句来检查:

.libPaths()

输出

[1] "/Library/Frameworks/R.framework/Versions/4.0/Resources/library"

目录输出可能因 R 安装而异。这只是针对我的情况。目录输出是存储已安装软件包的位置。对于Windows系统,它可能看起来有所不同。

检查权限

MacLinux中,可以通过以下方式检查权限:

cd /Library/Frameworks/R.framework/Versions/4.0/Resources/library
ls -la

输出

drwxrwxr-x  422 root         admin  13504 Apr 21 19:13 .
drwxrwxr-x   18 root         admin    576 Jul 16  2020 ..
drwxr-xr-x    3 mario        admin     96 Jun 17  2021 RODBC
drwxr-xr-x    3 mario        admin     96 Jun 17  2021 dplyr

在这种情况下,安装软件包的是mario。由于我 -luigi- 目前正在使用机器,我无法删除这些软件包。只有mario才能做到这一点。

Windows中,我不知道如何检查它。

授予权限

cd /Library/Frameworks/R.framework/Versions/4.0/Resources/library
sudo chown -R luigi:admin .

cd /Library/Frameworks/R.framework/Versions/4.0/Resources/library
sudo chmod -R o+w .

Windows中,我不知道如何授予权限。

删除包

最后,使用正确的权限,您现在可以像这样删除软件包:

remove.packages("RODBC")

我遇到了同样的麻烦,所以我尝试手动删除软件包,但发现我没有 root 权限。然后我关闭 R,并使用 sudo 启动它,尝试再次删除包。但是,它对我有用。

remove.packages方面也有问题,因此按照@sweetmusicality的建议删除文件夹对我有用:

#e.g. remove packages associated with tidyverse
pkremove <- tools::package_dependencies("tidyverse", db = installed.packages())$tidyverse
lapply(pkremove, function(x) {
unlink(paste0(.libPaths()[1], "/", x), recursive = TRUE) 
})

最新更新