Gostaria de descarregar um pacote sem ter que reiniciar o R (principalmente porque reiniciar o R ao experimentar diferentes pacotes conflitantes está ficando frustrante, mas é possível que isso possa ser usado em um programa para usar uma função e depois outra - embora o namespace referenciar é provavelmente uma idéia melhor para esse uso).
?library
não mostra nenhuma opção que descarregaria um pacote.
Há uma sugestão que detach
pode descarregar o pacote, mas os dois seguintes falham:
detach(vegan)
Erro em
detach(vegan)
:name
argumento inválido
detach("vegan")
Erro em
detach("vegan")
:name
argumento inválido
Então, como descarrego um pacote?
.libPaths()
Fornece os caminhos para todas as bibliotecas do seu sistema.library
de duas maneiras: 1 - não é o mesmo usolibrary
que em outros lugares, e 2 - o termo é usadolibrary()
para carregar ... não um biblioteca, mas um pacote.require
" ou "desfazerlibrary
" porque é assim que normalmente carrego, erm, "pacotes". A titulação adequada torna a pergunta mais correta, mas também mais difícil de encontrar.Respostas:
Tente isto (veja
?detach
para mais detalhes):É possível ter várias versões de um pacote carregadas de uma só vez (por exemplo, se você tiver uma versão de desenvolvimento e uma versão estável em diferentes bibliotecas). Para garantir que todas as cópias sejam desanexadas, use esta função.
O uso é, por exemplo
ou
fonte
> detach("package:MASS", unload=TRUE) Error in detach("package:MASS", unload = TRUE) : invalid 'name' argument
Você também pode usar o
unloadNamespace
comando, como em:A função desanexa o espaço para nome antes de descarregá-lo.
fonte
Você pode desmarcar o botão da caixa de seleção no RStudio (pacotes).
fonte
detach("package:packageToUnload", unload=TRUE)
execução de um comando e não é diferente da solução já proposta.Tentei o que o kohske escreveu como resposta e obtive um erro novamente. Pesquisei e encontrei o que funcionava para mim (R 3.0.2):
ou também
fonte
Quando você alterna entre scripts, às vezes pode ser necessário descarregar um pacote. Aqui está uma instrução IF simples que evitará avisos que apareceriam se você tentasse descarregar um pacote que não estava carregado no momento.
Incluir isso na parte superior de um script pode ser útil.
Espero que faça o seu dia!
fonte
detach(package:PackageName)
funciona e não há necessidade de usar aspas.fonte
Você pode tentar tudo o que deseja remover um pacote (e todas as dependências que ele trouxe),
unloadNamespace()
mas o espaço ocupado pela memória ainda persistirá. E não,detach("package:,packageName", unload=TRUE, force = TRUE)
também não vai funcionar.Em um novo console novo ou
Session > Restart R
verifique a memória com opryr
pacote:Verifique meu
sessionInfo()
Vamos carregar o
Seurat
pacote e verificar a nova pegada de memória :Vamos usar
unloadNamespace()
para remover tudo:Agora verifique
sessionInfo()
:Verifique a pegada de memória :
Link para demonstração de elenco
fonte
Eu gostaria de adicionar uma solução alternativa. Esta solução não responde diretamente à sua pergunta sobre o descarregamento de um pacote, mas, o IMHO, fornece uma alternativa mais limpa para atingir o objetivo desejado, que eu entendo, está amplamente preocupado em evitar conflitos de nomes e tentar funções diferentes, conforme declarado:
Solução
A função
with_package
oferecida pelowithr
pacote oferece a possibilidade de:Exemplo
geom_point
usado no exemplo não está acessível no namespace global. Eu acho que pode ser uma maneira mais limpa de lidar com conflitos do que carregar e descarregar pacotes.fonte
Observe também que você pode usar apenas
unload()
uma vez. Se você usá-lo pela segunda vez sem executarlibrary()
novamente, você receberá o argumento inválido 'nome' da mensagem de erro não muito informativa :Criado em 2020-05-09 pelo pacote reprex (v0.3.0)
fonte
Vá para a janela OUTPUT e clique no ícone Packages (está localizado entre os ícones Plot e Help ). Remova a marca de seleção da embalagem que você deseja descarregar.
Para usar novamente o pacote, basta colocar um " visto ou marca de verificação " na frente do pacote ou usar:
fonte
Outra opção é
Aparentemente, isso também lida com a questão dos métodos S3 registrados que não são removidos com o
unloadNamespace()
fonte