ventajas studio sirven que para paquetes paquete los library instalar instalados guardan donde agricolae r dependencies repository packages cran

studio - Instale un paquete R local con dependencias del espejo CRAN



r paquetes instalados (4)

Aquí, estoy usando untar() con devtools::install() y paso en un directorio al que se ha extraído el tarball de origen.

d <- tempdir() untar("mypackage.tar.gz", compressed="gzip", exdir=d) devtools::install(file.path(d, "mypackage"), dependencies=TRUE, repos="https://cloud.r-project.org/")

Si desea instalar desde varios repositorios, puede proporcionar una lista de ellos. Por ejemplo, para usar tanto Bioconductor como CRAN, podría ejecutar:

devtools::install(file.path(d, "mypackage"), dependencies=TRUE, repos=BiocInstaller::biocinstallRepos())

NOTA: No puedo entender cómo pasar directamente el tarball a install() , pero esta solución funciona mientras tanto y no deja ningún problema porque la extraemos a un directorio temporal. Parece que install_local() debería poder tomar un tarball, pero estoy recibiendo un error cuando intento hacerlo.

He creado un paquete R, es decir, tengo el archivo mypackage.tar.gz. Este paquete depende de varios otros paquetes, todos descargables e instalables desde cualquier espejo CRAN.

Ahora quiero instalar este paquete en un sistema donde las dependencias aún no están instaladas, y me gustaría que las dependencias se descarguen e instalen automáticamente cuando instale mi paquete.

Lo intenté:

install.packages("mypackage.tar.gz",type="source",dependencies=TRUE,repos="http://a.cran.mirror")

pero busca mypackage.tar.gz en el espejo (y obviamente no lo encuentra), mientras que si configuro repos=NULL intenta instalar el archivo del paquete local (como está documentado), pero obviamente no encuentra las dependencias paquetes.

Entonces mi pregunta es: ¿hay alguna manera de realizar una instalación ''mixta'' (paquete local con dependencias en línea) o la única forma de hacerlo es instalar manualmente todas las dependencias?


Puede usar install desde el paquete devtools. Simplemente ejecute install("<directory of your package>", dependencies = TRUE) . Su ayuda dice:

Utiliza R CMD INSTALL para instalar el paquete. También intentará instalar dependencias del paquete desde CRAN, si aún no están instaladas.


Si ya ha instalado su paquete local, debería poder usar un par de funciones en las herramientas para instalar las dependencias de CRAN:

library(''tools'') installFoundDepends(pkgDepends(''mypackage'', local = FALSE)$Found)

Nota: Puede pasar args (como repos ) a través de installFoundDepends para installFoundDepends .

También puede usar el elemento Depends de la salida pkgDepends para pasar directamente a install.packages :

install.packages(pkgDepends(''mypackage'')$Depends)

ACTUALIZACIÓN: Aparentemente no es posible instalar un paquete local con dependencies=FALSE . Esto parece extraño, ya que puede hacer eso para un paquete remoto desde un repositorio. La razón ( mirando el código fuente ) es que if(is.null(repos) & missing(contriburl)) , la instalación se maneja a través de llamadas del sistema a R CMD INSTALL , que no tiene argumentos relacionados con la dependencia.


Yo personalmente uso RStudio que le dice qué dependencias faltan. Luego copio la cadena en los argumentos de la siguiente pequeña secuencia de comandos para cambiar los símbolos ''extraños'' en la clásica "(xclip está copiando al portapapeles [es como pbcopy en macOS]).

#!/bin/bash echo $@ | sed ''s/‘/"/g'' | sed ''s/’/"/g'' | xclip -selection clipboard

Luego simplemente uso install.packages(c(ctrl_v__what_to_install)) y R comienza a instalar todas las dependencias.

NB: recuerde que los dos '' escritos en el guión anterior son diferentes y la primera vez que copie este guión, le aconsejo copiar nuevamente los caracteres de comillas originales.