La instalación de todos los paquetes CRAN que no están ya instalados?

StackOverflow https://stackoverflow.com/questions/2169118

  •  24-09-2019
  •  | 
  •  

Pregunta

Los siguientes comandos R instalarán todos los paquetes CRAN:

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

Y el siguiente comando mostrará una lista de todos los paquetes instalados:

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

Mi pregunta es: ¿Cómo instruir R para instalar todos los paquetes CRAN que no están ya instalados

?
¿Fue útil?

Solución

Francamente, creo que es laborioso trabajo ... que iba a durar varios días, incluso semanas (dependiendo de los recursos), pero aquí está el código (que disfruto haciendo cosas 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)

Todavía no entiendo por qué estás haciendo esto, pero, bueno ... algunas cosas simplemente no están destinados a ser .... Lo que más me se pregunta es el hecho de que ya haya respondido a su propia pregunta! Ya tienes lo que necesita, y es sólo depende de usted para poner las cosas juntos ... Nos estamos perdiendo el punto? ¿Tuvo algo más en mente?!?

Otros consejos

1) ¿Por qué querrías hacer eso? Hay más de 3500 (como de 2012 FEB) de ellos?

2) ¿Lo ves en CRAN Tarea Vistas y la CTV paquete que le permite instalar paquetes de una determinada tarea?

3) Usted negrita pregunta es una consulta de indexación simple que se puede hacer a mano (y además de eso, también ver 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> 

Editar: en respuesta a su seguimiento:

a) Si un paquete no pasa 'R CMD cheque' en Linux y Windows, que no consigue subido a CRAN. Así que el trabajo está hecho.

b) Conseguir todo depende a su final es demasiado trabajo como se verá. Lo hicimos por cran2deb que se encuentra en http://debian.cran.r-project.org (que hace edificio en toda regla paquete Debian que es algo más que la instalación). Obtenemos en 2050, más de 2150 paquetes construidos. Hay algunos que se niegan a construir debido a la licencia, unos pocos no puede debido a que faltan o cabeceras libs y unos pocos no podemos construir, ya que, por ejemplo, es necesario BioConductor paquetes.

escriba este comando y luego todos los paquetes se instalarán automáticamente:

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

He probado esto y funciona

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

Regards

Es mejor si se utiliza:

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

llamar a la función y comprobar si se ha instalado el paquete requerido:

    check.and.install.Package("pkgName")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top