Apenas para completar, existem algumas maneiras de impedir que você tenha esse problema. Como Dirk disse, salve seus pacotes em outro diretório do seu computador.
install.packages("thepackage",lib="/path/to/directory/with/libraries")
Você pode alterar o .Library
valor padrão usando a função .libPaths
também
.libPaths("/path/to/directory/with/libraries")
Isso colocará esse caminho como o primeiro valor na .Library
variável e o tornará o padrão.
Se você deseja automatizar isso ainda mais, é possível especificar isso no arquivo Rprofile.site, que você encontra no diretório / etc / do seu R build. Em seguida, ele será carregado automaticamente sempre que R for carregado, e você não precisará mais se preocupar com isso. Você pode simplesmente instalar e carregar pacotes do diretório especificado.
Finalmente, tenho um pequeno código incluído no meu Rprofile.site, permitindo-me reinstalar todos os pacotes quando instalo uma nova versão R. Você apenas precisa listá-los antes de atualizar para a nova versão R. Eu faço isso usando um arquivo .RData que contém uma lista atualizada com todos os pacotes.
library(utils)
## Check necessary packages
load("G:\Setinfo\R\packagelist.RData") # includes a vector "pkgs"
installed <- pkgs %in% installed.packages()[, 'Package']
if (length(pkgs[!installed]) >=1){
install.packages(pkgs[!installed])
}
Eu faço o packagelist.RData especificando .Last()
no meu Rprofile.site. Isso atualiza a lista de pacotes se eu instalei alguns:
.Last <- function(){
pkgs <- installed.packages()[,1]
if (length(pkgs) > length(installed)){
save(pkgs,file="G:\Setinfo\R\packagelist.RData")
}
}
Quando instalo uma nova versão R, apenas adiciono os elementos necessários ao arquivo Rprofile.site e todos os pacotes são reinstalados. Tenho que ajustar o Rprofile.site de qualquer maneira (usando contrastes de soma, adicionando o código extra para Tinn-R, essas coisas), para que não seja realmente um trabalho extra. Leva apenas um tempo extra para instalar todos os pacotes novamente.
Este último bit é equivalente ao que é dado na pergunta original como uma solução. Só não preciso me preocupar em obter a lista "instalada" primeiro.
Novamente, isso não funcionará perfeitamente se você tiver pacotes que não estão instalados no CRAN. Mas esse código é facilmente extensível para incluir também esses.