Come scaricare un pacchetto senza riavviare R

Translate

Vorrei scaricare un pacchetto senza dover riavviare R (principalmente perché riavviare R mentre provo pacchetti diversi e in conflitto sta diventando frustrante, ma plausibilmente questo potrebbe essere usato in un programma per usare una funzione e poi un'altra, sebbene lo spazio dei nomi il riferimento è probabilmente un'idea migliore per quell'uso).

?librarynon mostra alcuna opzione che scarichi un pacchetto.

C'è unsuggerimentoquellodetachpuò scaricare il pacchetto, ma entrambi i seguenti falliscono:

detach(vegan)

Errore indetach(vegan): non validonamediscussione

detach("vegan")

Errore indetach("vegan"): non validonamediscussione

Allora come scarico un pacco?

This question and all comments follow the "Attribution Required."

Tutte le risposte

Translate

Prova questo (vedi?detachper ulteriori dettagli):

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

È possibile caricare più versioni di un pacchetto contemporaneamente (ad esempio, se si dispone di una versione di sviluppo e di una versione stabile in librerie diverse). Per rimuovere la garanzia che tutte le copie siano staccate, utilizzare questa funzione.

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

L'utilizzo è, per esempio

detach_package(vegan)

or

detach_package("vegan", TRUE)
fonte
Translate

Puoi anche utilizzare il comando unloadNamespace, come in:

unloadNamespace("sqldf")

La funzione scollega lo spazio dei nomi prima di scaricarlo.

fonte
Translate

Puoi deselezionare il pulsante della casella di controllo in RStudio (packages).

RStudio packages pane

fonte
Translate

Ho provato quello che ha scritto kohske come risposta e ho ricevuto di nuovo un errore, quindi ho fatto qualche ricerca e ho trovato questo che ha funzionato per me (R 3.0.2):

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

o anche

library(splines)
pkg <- "package:splines"
detach(pkg, character.only = TRUE)
fonte
dca
Translate

Quando vai avanti e indietro tra gli script, può soloa volteessere necessario per scaricare un pacco. Ecco una semplice istruzione IF che impedirà gli avvisi che apparirebbero se si tentasse di scaricare un pacchetto che non era attualmente caricato.

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

Potrebbe essere utile includerlo all'inizio di uno script.

Spero che renda la tua giornata!

fonte
Translate

detach(package:PackageName)funziona e non è necessario utilizzare le virgolette.

fonte
Translate

Vai alla finestra OUTPUT, quindi fai clic sull'icona Pacchetti (si trova traTrama e aiutoicone). Rimuovi "segno di spunta / segno di spunta"dal pacchetto che desideri scaricare.

Per utilizzare nuovamente il pacchetto, inserisci "segno di spunta o segno di spunta"davanti alla confezione o utilizza:

library (lme4)
fonte
Translate

Vorrei aggiungere una soluzione alternativa. Questa soluzione non risponde direttamente alla tua domanda suscaricoun pacchetto ma, IMHO, fornisce un'alternativa più pulita per raggiungere l'obiettivo desiderato, che, a quanto ho capito, si occupa in generale di evitare conflitti di nomi e provare diverse funzioni, come affermato:

principalmente perché il riavvio di R mentre provo pacchetti diversi e in conflitto sta diventando frustrante, ma plausibilmente questo potrebbe essere usato in un programma per usare una funzione e poi un'altra, sebbene il riferimento allo spazio dei nomi sia probabilmente un'idea migliore per quell'uso

Soluzione

Funzionewith_packageofferto tramite ilwithril pacchetto offre la possibilità di:

allegare un pacchetto al percorso di ricerca, esegue il codice, quindi rimuove il pacchetto dal percorso di ricerca. Lo spazio dei nomi del pacchetto ènonscaricato, tuttavia.

Esempio

library(withr)
with_package("ggplot2", {
  ggplot(mtcars) + geom_point(aes(wt, hp))
})
# Calling geom_point outside withr context 
exists("geom_point")
# [1] FALSE

geom_pointutilizzato nell'esempio non è accessibile dallo spazio dei nomi globale. Penso che potrebbe essere un modo più pulito di gestire i conflitti rispetto al caricamento e allo scaricamento dei pacchetti.

fonte