以下R命令将安装所有CRAN包:
availablePackages <- available.packages()[,1]
install.packages(availablePackages)
以下命令将列出所有已安装的软件包:
installedPackages <- .packages(all.available = TRUE)
我的问题是:如何指示R安装尚未安装的所有CRAN软件包?
答案 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的速度。至少这就是我的情况。