gpt4 book ai didi

r - 卸载(删除)具有依赖项的 R 包

转载 作者:行者123 更新时间:2023-12-03 09:11:06 26 4
gpt4 key购买 nike

我想尝试一些新的包。我安装了它,它需要很多依赖项,所以它安装了很多其他包。我试过了,并没有留下深刻的印象 - 现在我想卸载该软件包,包括所有依赖项!

有没有办法删除给定的包,包括系统中任何其他包不需要的所有依赖项?

我看了?remove.packages但没有选择这样做。

最佳答案

这里有一些代码可以让你删除一个包及其不需要的依赖项。请注意,它对“不需要的”依赖包的解释是该包所依赖但未在任何其他包中使用的包的集合。这意味着它也会默认建议卸载没有反向依赖关系的包。因此,我将它实现为一个交互式菜单(如 update.packages ),让您控制要卸载的内容。

library("tools")

removeDepends <- function(pkg, recursive = FALSE){
d <- package_dependencies(,installed.packages(), recursive = recursive)
depends <- if(!is.null(d[[pkg]])) d[[pkg]] else character()
needed <- unique(unlist(d[!names(d) %in% c(pkg,depends)]))
toRemove <- depends[!depends %in% needed]
if(length(toRemove)){
toRemove <- select.list(c(pkg,sort(toRemove)), multiple = TRUE,
title = "Select packages to remove")
remove.packages(toRemove)
return(toRemove)
} else {
invisible(character())
}
}

# Example
install.packages("YplantQMC") # installs an unneeded dependency "LeafAngle"
c("YplantQMC","LeafAngle") %in% installed.packages()[,1]
## [1] TRUE TRUE
removeDepends("YplantQMC")
c("YplantQMC","LeafAngle") %in% installed.packages()[,1]
## [1] FALSE FALSE

注意: recursive选项可能特别有用。如果包依赖进一步依赖其他不需要的包,设置 recursive = TRUE至关重要。如果依赖关系很浅(即,仅在依赖关系树下一级),则可以将其保留为 FALSE (默认)。

关于r - 卸载(删除)具有依赖项的 R 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26573368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com