以下R命令将安装所有CRAN包:
availablePackages <- available.packages()[,1] install.packages(availablePackages)
以下命令将列出所有已安装的软件包:
installedPackages <- .packages(all.available = TRUE)
我的问题是:如何指示R安装尚未安装的所有CRAN软件包?
坦率地说,我认为这是艰苦的工作......它会持续数天,甚至数周(取决于资源),但这里是代码(我只是喜欢做一些琐碎的事情):
# 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)你为什么要那样做?他们有超过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 check",则不会上传到CRAN.这样的工作就完成了.
b)获得所有取决于你最终的工作也是如你所见.我们为http://debian.cran.r-project.org(它做了完整的Debian软件包构建,而不仅仅是安装)的cran2deb做了这个.在2150个包中,我们得到了大约2050个.有一些我们拒绝建立因为许可证,一些我们不能因为缺少标题或库而我们无法构建因为他们需要例如BioConductor包.