仅出于完整性考虑,有一些方法可以防止出现此问题。如Dirk所说,将软件包保存在计算机上的另一个目录中。
install.packages("thepackage",lib="/path/to/directory/with/libraries")
您可以更改默认.Library
使用的函数值.libPaths
太
.libPaths("/path/to/directory/with/libraries")
这会将路径作为.Library
变量的第一个值,并将其作为默认值。
如果要进一步自动执行此操作,可以在Rprofile的/ etc /目录中的Rprofile.site文件中指定它。然后,它将在每次加载R时自动加载,您不必再为此担心。您可以只从指定目录安装和加载软件包。
最后,我在Rprofile.site中包含一些小代码,允许我在安装新的R版本时重新安装所有软件包。您只需要列出它们,然后再更新到新的R版本。我使用包含所有软件包的更新列表的.RData文件来执行此操作。
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])
}
我通过.Last()
在Rprofile.site中指定来创建packagelist.RData 。如果我安装了一些软件包,这将更新软件包列表:
.Last <- function(){
pkgs <- installed.packages()[,1]
if (length(pkgs) > length(installed)){
save(pkgs,file="G:\Setinfo\R\packagelist.RData")
}
}
当我安装新的R版本时,只需将必要的元素添加到Rprofile.site文件中,然后重新安装所有软件包。无论如何,我都必须调整Rprofile.site(使用总和,为Tinn-R添加额外的代码,这些事情),所以这并不是真正的额外工作。重新安装所有软件包只需要花费额外的时间。
最后一点等同于原始问题中给出的解决方案。我只是不需要担心首先获得“已安装”列表。
同样,如果您没有从CRAN安装的软件包,这将无法正常工作。但是此代码也很容易扩展以包括这些代码。