3 回答

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊
為了完整起見,有一些方法可以防止您遇到此問題。正如Dirk所說,將包保存在計(jì)算機(jī)上的另一個(gè)目錄中。
install.packages("thepackage",lib="/path/to/directory/with/libraries")
您可以更改默認(rèn).Library
使用的函數(shù)值.libPaths
太
.libPaths("/path/to/directory/with/libraries")
這會(huì)將此路徑作為.Library
變量中的第一個(gè)值,并使其成為默認(rèn)值。
如果要進(jìn)一步自動(dòng)化,可以在Rprofile.site文件中指定它,您可以在R build的/ etc /目錄中找到它。然后每次加載時(shí)它都會(huì)自動(dòng)加載,你不必再擔(dān)心了。您只需從指定目錄安裝和加載包即可。
最后,我的Rprofile.site中包含一些小代碼,允許我在安裝新R版本時(shí)重新安裝所有軟件包。您只需在更新到新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中指定來創(chuàng)建packagelist.RData 。如果我安裝了一些,則更新包列表:
.Last <- function(){ pkgs <- installed.packages()[,1] if (length(pkgs) > length(installed)){ save(pkgs,file="G:\Setinfo\R\packagelist.RData") }}
當(dāng)我安裝新的R版本時(shí),我只需將必要的元素添加到Rprofile.site文件中,然后重新安裝所有軟件包。無論如何我必須調(diào)整Rprofile.site(使用和比,為Tinn-R添加額外的代碼,這些東西),所以這不是真正的額外工作。它只需要額外的時(shí)間來重新安裝所有包。
最后一位相當(dāng)于原始問題中給出的解決方案。我不需要擔(dān)心首先獲得“已安裝”列表。
同樣,如果您的軟件包未從CRAN安裝,則無法完美運(yùn)行。但是這個(gè)代碼很容易擴(kuò)展,包括那些代碼。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊
如果你有先見之明,接受的答案可能會(huì)有效,但我已經(jīng)擺脫了舊版本,因此無法遵循這些指示。下面描述的步驟適用于從2.1和3.1升級(jí)的OSX。
更新:要獲取最新版本的目錄(而不是鍵入3.1或3.2),您可以使用以下命令。第二個(gè)直接轉(zhuǎn)換為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
到最后將其直接復(fù)制到Mac剪貼板)
然后在R中,您可以粘貼生成的變量。一旦在新版本的R中定義了它,您就可以按照上面的說明遍歷已安裝的軟件包......
for (p in setdiff(packages, installed.packages()[,"Package"])) install.packages(p, dependencies=TRUE, quiet=TRUE, ask=FALSE)
添加回答
舉報(bào)