3 回答
TA贡献2016条经验 获得超9个赞
为了完整起见,有一些方法可以防止您遇到此问题。正如Dirk所说,将包保存在计算机上的另一个目录中。
install.packages("thepackage",lib="/path/to/directory/with/libraries")
您可以更改默认.Library
使用的函数值.libPaths
太
.libPaths("/path/to/directory/with/libraries")
这会将此路径作为.Library
变量中的第一个值,并使其成为默认值。
如果要进一步自动化,可以在Rprofile.site文件中指定它,您可以在R build的/ etc /目录中找到它。然后每次加载时它都会自动加载,你不必再担心了。您只需从指定目录安装和加载包即可。
最后,我的Rprofile.site中包含一些小代码,允许我在安装新R版本时重新安装所有软件包。您只需在更新到新R版本之前列出它们。我使用包含所有包的更新列表的.RData文件。
library(utils)## Check necessary packagesload("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安装,则无法完美运行。但是这个代码很容易扩展,包括那些代码。
TA贡献1828条经验 获得超13个赞
如果你有先见之明,接受的答案可能会有效,但我已经摆脱了旧版本,因此无法遵循这些指示。下面描述的步骤适用于从2.1和3.1升级的OSX。
更新:要获取最新版本的目录(而不是键入3.1或3.2),您可以使用以下命令。第二个直接转换为R变量,跳过.
和,..
并.DS_Store
使用:
OLD=$(ls -d /Library/Frameworks/R.framework/Versions/*.* |tail -n 2 | head -n 1)Resources/library/echo "packages = c(\"`ls $OLD | tail +4| paste -s -d ',' - | sed -E 's|,|\",\"|'g`\")" | tr -d "/"
(添加|pbcopy
到最后将其直接复制到Mac剪贴板)
然后在R中,您可以粘贴生成的变量。一旦在新版本的R中定义了它,您就可以按照上面的说明遍历已安装的软件包......
for (p in setdiff(packages, installed.packages()[,"Package"])) install.packages(p, dependencies=TRUE, quiet=TRUE, ask=FALSE)
添加回答
举报