Question

Les commandes de R suivantes pour installer tous les packages CRAN:

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

Et la commande suivante répertorie tous les packages installés:

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

Ma question est: Comment puis-je instruis R pour installer tous les paquets qui ne sont pas CRAN déjà installés

Était-ce utile?

La solution

Franchement, je pense que ce travail minutieux ... il durer pendant des jours, voire des semaines (en fonction des ressources), mais voici le code (j'aime juste faire des choses triviales):

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

Je ne comprends toujours pas pourquoi tu fais ça, mais bon ... certaines choses sont tout simplement pas destinés à être .... Ce qui me se demande le plus est le fait que vous avez déjà répondu à votre question! Vous avez obtenu ce que vous avez besoin, et il est juste à vous de mettre les choses ensemble ... Sommes-nous manque le point? Est-ce que vous avez quelque chose d'autre à l'esprit?!?

Autres conseils

1) Pourquoi voudriez-vous faire cela? Il y a sur 3500 (en février 2012) d'entre eux?

2) Avez-vous regardé CRAN Tâche Vues et VCT qui vous permet d'installer des paquets à partir d'une tâche donnée?

3) Vous question audacieuse face est une simple requête d'indexation, vous pouvez le faire à la main (et que d'ailleurs, voir aussi 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> 

Edit: en réponse à votre suivi:

a) Si un paquet ne passe pas « R CMD contrôle » sur Linux et Windows, il ne soit pas téléchargée sur CRAN. Alors que le travail est fait.

b) Obtenir tout dépend de votre fin est un travail aussi comme vous le verrez. Nous l'avons fait pour cran2deb qui est à http://debian.cran.r-project.org (qui fait la construction de paquets Debian complet qui est plus que l'installation). Nous recevons environ 2050 de 2150 paquets construits. Il y a quelques nous refusons de construire en raison de la licence, un peu nous ne pouvons pas en raison des en-têtes manquants ou libs et quelques nous ne pouvons pas construire parce qu'ils ont besoin par exemple forfaits BioConductor.

tapez cette commande et tous les paquets seront installés automatiquement:

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

Je l'ai testé cela et il fonctionne

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

Cordialement

Mieux si vous utilisez:

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

appeler la fonction et vérifier si l'emballage requis est installé:

    check.and.install.Package("pkgName")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top