Je voudrais décharger un paquet sans avoir à redémarrer R (principalement parce que redémarrer R alors que j'essaye différents paquets conflictuels devient frustrant, mais il est concevable que cela puisse être utilisé dans un programme pour utiliser une fonction puis une autre - bien que l'espace de noms le référencement est probablement une meilleure idée pour cette utilisation).
?library
n'affiche aucune option permettant de décharger un package.
Il existe une suggestion qui detach
peut décharger le package, mais les deux suivantes échouent:
detach(vegan)
Erreur dans
detach(vegan)
:name
argument non valide
detach("vegan")
Erreur dans
detach("vegan")
:name
argument non valide
Alors, comment puis-je décharger un colis?
.libPaths()
Vous donne les chemins d'accès à toutes les bibliothèques de votre système.library
de deux manières: 1 - ce n'est pas la même utilisationlibrary
qu'ailleurs, et 2 - le terme est utilisélibrary()
pour charger ... pas un bibliothèque, mais un package.require
" ou "annulerlibrary
" parce que c'est généralement ainsi que je charge, euh, "packages". Le titrer correctement rend la question plus correcte mais aussi plus difficile à trouver.Réponses:
Essayez ceci (voir
?detach
pour plus de détails):Il est possible d'avoir plusieurs versions d'un package chargées à la fois (par exemple, si vous avez une version de développement et une version stable dans différentes bibliothèques). Pour garantir que toutes les copies sont détachées, utilisez cette fonction.
L'utilisation est, par exemple
ou
la source
> detach("package:MASS", unload=TRUE) Error in detach("package:MASS", unload = TRUE) : invalid 'name' argument
Vous pouvez également utiliser la
unloadNamespace
commande, comme dans:La fonction détache l'espace de noms avant de le décharger.
la source
Vous pouvez décocher la case à cocher dans RStudio (packages).
la source
detach("package:packageToUnload", unload=TRUE)
exécution d' une commande et n'est pas différent de la solution déjà proposée.J'ai essayé ce que kohske a écrit comme réponse et j'ai encore eu une erreur, alors j'ai fait une recherche et j'ai trouvé cela qui fonctionnait pour moi (R 3.0.2):
ou aussi
la source
Lorsque vous effectuez des allers-retours entre les scripts, il peut parfois être nécessaire de décharger un package. Voici une simple instruction IF qui empêchera les avertissements qui s'afficheraient si vous tentiez de décharger un paquet qui n'était pas actuellement chargé.
L'inclure en haut d'un script peut être utile.
J'espère que cela fait votre journée!
la source
detach(package:PackageName)
fonctionne et il n'est pas nécessaire d'utiliser des guillemets.la source
Vous pouvez essayer tout ce que vous voulez supprimer un package (et toutes les dépendances qu'il a apportées en même temps) en utilisant,
unloadNamespace()
mais l' empreinte mémoire persistera. Et non,detach("package:,packageName", unload=TRUE, force = TRUE)
ça ne marchera pas non plus.À partir d'une nouvelle console ou
Session > Restart R
vérifiez la mémoire avec lepryr
package:Vérifier mon
sessionInfo()
Chargeons le
Seurat
package et vérifions la nouvelle empreinte mémoire :Utilisons
unloadNamespace()
pour tout supprimer:Maintenant, vérifiez
sessionInfo()
:Vérifiez l' empreinte mémoire :
Lien vers la démonstration de la capture d'écran
la source
Je voudrais ajouter une solution alternative. Cette solution ne répond pas directement à votre question sur le déchargement d' un paquet mais, à mon humble avis, fournit une alternative plus propre pour atteindre votre objectif souhaité, ce que je comprends, est largement soucieux d'éviter les conflits de noms et d'essayer différentes fonctions, comme indiqué:
Solution
La fonction
with_package
offerte via lewithr
package offre la possibilité de:Exemple
geom_point
utilisé dans l'exemple n'est pas accessible à partir de l'espace de noms global. Je pense que cela peut être une façon plus propre de gérer les conflits que de charger et décharger des paquets.la source
Notez également que vous ne pouvez l'utiliser
unload()
qu'une seule fois. Si vous l'utilisez une deuxième fois sanslibrary()
réexécution, vous obtiendrez l' argument «nom» non valide du message d'erreur peu informatif :Créé le 2020-05-09 par le package reprex (v0.3.0)
la source
Accédez simplement à la fenêtre SORTIE, puis cliquez sur l'icône Packages (elle est située entre les icônes Plot et Help ). Supprimez " coche / coche " du paquet que vous souhaitez décharger.
Pour utiliser à nouveau le package, mettez simplement une " coche ou une coche " devant le package ou utilisez:
la source
Une autre option est
Apparemment, cela traite également du problème des méthodes S3 enregistrées qui ne sont pas supprimées avec
unloadNamespace()
la source