2011-08-08 20 views
362

Me gustaría descargar un paquete sin tener que reiniciar R (sobre todo porque reiniciar R ya que pruebo diferentes paquetes conflictivos se está volviendo frustrante, pero es concebible que esto pueda usarse en un programa para usar una función y luego otra-- aunque la referencia del espacio de nombres es probablemente una mejor idea para ese uso).¿Cómo descargar un paquete sin reiniciar R?

?library no muestra ninguna opción que descargue un paquete.

Hay un paquete suggestion que detach puede descargar, pero el siguiente tanto fallar:

detach(vegan) 

error en detach(vegan): inválido name argumento

detach("vegan") 

error en detach("vegan") : inválido name argumento

Entonces, ¿cómo descargo un paquete?

+3

@Iterator: Una biblioteca es un lugar donde se encuentran paquetes. (No son sinónimos.) '.libPaths()' le da las rutas a todas las bibliotecas de su sistema. –

+13

@Richie: Gracias. Lo entiendo en el contexto R, pero creo que el uso de R sobrecarga o hace ambiguo el término "biblioteca" de dos maneras: 1 - no es el mismo uso de 'biblioteca' que en cualquier otro sitio, y 2 - el término se usa en' library() 'para cargar ... no una biblioteca, sino un paquete. – Iterator

+2

@Iterator Tienes razón. Esta fue la respuesta que necesitaba, y cuando busqué en Google utilicé "opuesto a' require' "o" undo 'library'" porque así es como normalmente cargo, erm, "packages". Así que titular correctamente hace que la pregunta sea más correcta, pero también más difícil de encontrar. – isomorphismes

Respuesta

458

Prueba esto (ver ?detach para más detalles):

detach("package:vegan", unload=TRUE) 

Es posible tener múltiples versiones de un paquete cargado a la vez (por ejemplo, si tiene una versión de desarrollo y un establo versión en diferentes bibliotecas). Para separar, asegúrese de que todas las copias estén separadas, use esta función.

detach_package <- function(pkg, character.only = FALSE) 
{ 
    if(!character.only) 
    { 
    pkg <- deparse(substitute(pkg)) 
    } 
    search_item <- paste("package", pkg, sep = ":") 
    while(search_item %in% search()) 
    { 
    detach(search_item, unload = TRUE, character.only = TRUE) 
    } 
} 

uso es, por ejemplo

detach_package(vegan) 

o

detach_package("vegan", TRUE) 
+2

@hadley De hecho. La versión sin comillas no parece funcionar en la última versión de R. He actualizado la respuesta de kohske para reflejar su solución. –

+0

@ AriB.Friedman, ¿hay alguna manera de separar varios paquetes a la vez? Cuando cargo, diga 'Hmisc', también carga' survival' y 'splines' ¿hay alguna forma de descargar esos grupos? –

+0

@EricFail ¿Te suena a una nueva pregunta? –

5

Probé lo kohske escribí como una respuesta y me dio el error de nuevo, por lo que he hecho un poco de búsqueda y encontré este cuales funcionó para mí (R 3.0.2):

require(splines) # package 
detach(package:splines) 

o también

library(splines) 
pkg <- "package:splines" 
detach(pkg, character.only = TRUE) 
+3

¿Qué error obtienes? Porque funciona para mí (R 3.1). Y la segunda solución es la misma respuesta de @koshke, solo sin descargar (por lo que el espacio de nombres del paquete no se descarga). – alko989

+0

Tengo el mismo error. el punto es que di la misma solución que @Kohske pero con un nombre de paquete diferente. simplemente significa que si usa el paquete: entonces debería funcionar bien, pero si no lo usa, obtendrá el mismo error que en la pregunta. ;) –

+0

Espera ... ¿así que trataste de descargar un paquete que ni siquiera estaba cargado? ¿Y te sorprende que hayas recibido un error? – Gregor

46

También puede utilizar el comando unloadNamespace, como en:

unloadNamespace("sqldf") 

La función separa el espacio de nombres antes de descargarlo.

+3

esto funcionó para mí y las otras opciones recomendadas no. ¡Gracias! – amok

18

puede desactivar el botón de casilla de verificación en rstudio (paquetes)

+6

Vale la pena añadir que esto resulta en una 'quitar ("paquete: packageToUnload", descarga = TRUE)' siendo ejecutado mando y no es diferente a (http://stackoverflow.com/a/6979989 [solución ya propuesta.]/1655567) – Konrad

0

basta con ir a la ventana de salida, a continuación, haga clic en el icono de Paquetes (que se encuentra entre Trama y Ayuda iconos). Elimine "tilde/marca de verificación" del paquete que desea descargar.

Para utilizando de nuevo el paquete acaba de poner un "garrapata o marca de verificación" en la caja del producto o uso:

library (lme4) 
+0

No, a menos que tenga su propia ruta de biblioteca personalizada. No aparece en "Paquetes", por lo que debe hacer los métodos anteriores – zazu

4

cuando se va ida y vuelta entre las secuencias de comandos que sólo veces puede ser necesario para descargar un paquete Aquí hay una declaración simple de IF que evitará las advertencias que aparecerían si intenta descargar un paquete que no estaba cargado actualmente.

if("package:vegan" %in% search()) detach("package:vegan", unload=TRUE) 

Incluir esto en la parte superior de un script podría ser útil.

Espero que tenga su día!

Cuestiones relacionadas