安装尚未安装的所有CRAN包?

时间:2010-01-30 19:28:34

标签: r cran

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

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

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

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

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

6 个答案:

答案 0 :(得分:17)

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

# 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)

我仍然不明白你为什么要这样做,但是,嘿......有些事情本来就不应该...... 最让我感到惊讶的是你已经回答了自己的问题!你得到了你需要的东西,这取决于你把事情放在一起...... 我们错过了这一点吗?你还有别的想法吗?!?

答案 1 :(得分:13)

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

2)您是否看过CRAN Task Views和允许您从给定任务安装软件包的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 check”,则不会上传到CRAN。这样就完成了工作。

b)获得所有取决于你最终的工作也是如你所见。我们为cran2deb做了这个问题,它位于http://debian.cran.r-project.org(这是完整的Debian软件包构建,不仅仅是安装)。在2150个包中,我们得到了大约2050个。有一些我们拒绝构建,因为许可证,一些我们不能因为缺少标头或库而我们无法构建,因为他们需要例如BioConductor包。

答案 2 :(得分:2)

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

install.packages(available.packages()[,1])

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

此致

答案 4 :(得分:0)

更好地使用:

    check.and.install.Package("pkgName")

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

{{1}}

答案 5 :(得分:0)

根据我的经验,一次安装所有R软件包是不明智的!即使您不(使用库函数)调用所有这些程序包,仅通过坐在主目录中,它们也会降低R studio的速度。至少这就是我的情况。