以下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)有没有你看看 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)如果一个包裹没有通过'R CMD检查'Linux和窗户,它不得上载到CRAN.因此,工作已经完成。

b)获得一切都取决于在你是工作太为你会看到的。我们这样做是为cran2deb这是在 http://debian.cran.r-project.org (它不会完全成熟的软件包建筑,这不仅仅是安装).我们得到关于2050年的2150包建造的。有一些我们拒绝建立,因为许可证,几个我们不能因为缺少头或库和一些我们无法建立,因为他们需要,例如使用bioconductor包。

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

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

我测试这一点,它的工作原理

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

此致

更好,如果你使用的:

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

调用函数,并检查是否已安装所需的程序包:

    check.and.install.Package("pkgName")
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top