16

以下 R 命令将安装所有 CRAN 包:

availablePackages <- available.packages()[,1]
install.packages(availablePackages)

以下命令将列出所有已安装的软件包:

installedPackages <- .packages(all.available = TRUE)

我的问题是:如何指示 R 安装所有尚未安装的 CRAN 包?

4

6 回答 6

19

坦率地说,我认为这是一项艰苦的工作......它会持续数天,甚至数周(取决于资源),但这是代码(我只是喜欢做一些琐碎的事情):

# get names of installed packages
packs <- installed.packages()
exc <- names(packs[,'Package'])

# get available package names
av <- names(available.packages()[,1])

# create loooong string
ins <- av[!av %in% exc]
install.packages(ins)

我仍然不明白你为什么要这样做,但是,嘿......有些事情就是不应该......最让我惊讶的是你已经回答了你自己的问题!你得到了你需要的东西,而这一切都取决于你……我们是否错过了重点?你是不是有别的想法?!?

于 2010-01-31T01:11:50.897 回答
13

1)你为什么要这样做?有超过 3500 个(截至 2012 年 2 月)?

2) 您是否查看过CRAN 任务视图和允许您从给定任务安装包的ctv包?

3) 您的粗体问题是一个简单的索引查询,您可以手动完成(除此之外,另请参阅help(sets)

R> available <- LETTERS                  # a simple set
R> installed <- LETTERS[c(1:10, 15:26)]  # a simple subset
R> available[ ! available %in% installed ]
[1] "K" "L" "M" "N"
R> 

编辑:回应您的后续行动:

a) 如果一个包在 Linux 和 Windows 上没有通过“R CMD 检查”,它就不会被上传到 CRAN。这样就完成了这项工作。

b) 正如您将看到的,一切都取决于您的工作。我们为http://debian.cran.r-project.org上的 cran2deb 做了这件事(它进行了全面的 Debian 软件包构建,而不仅仅是安装)。我们从构建的 2150 个软件包中得到了大约 2050 个。有一些我们因为许可证而拒绝构建,一些我们因为缺少头文件或库而无法构建,还有一些我们无法构建,因为它们需要例如 BioConductor 包。

于 2010-01-30T19:40:22.273 回答
2

键入此命令,然后将自动安装所有软件包:

install.packages(available.packages()[,1])
于 2014-03-16T01:32:56.673 回答
1

如果你使用更好:

    check.and.install.Package<-function(package_name){
        if(!package_name%in%installed.packages()){
           install.packages(package_name)
        }
     }

调用该函数并检查是否安装了所需的包:

    check.and.install.Package("pkgName")
于 2018-07-09T12:13:07.160 回答
0

我已经对此进行了测试,并且可以正常工作

availablePackages=available.packages()
availablePackages<-as.vector(availablePackages[,1])
installedPackages=.packages(all.available = TRUE)
missedPackages<-setdiff(availablePackages, installedPackages)
for (i in 1:length(missedPackages))
{
pkgName <- missedPackages[i]
install.packages(pkgName)
}
print("END")

问候

于 2017-04-02T16:51:57.990 回答
0

根据我的经验,一次安装所有 R 包是不明智的!即使您不调用(使用库函数)所有这些包,只需坐在主目录中,它们也会减慢您的 R 工作室。至少我的情况就是这样。

于 2019-10-07T16:57:20.760 回答