2016-06-07 31 views
2

我正在RStudio中開發一個R包,並設置一個本地庫來包含我所有的包。在我的Ubuntu系統中安裝了一些更新後,似乎我的R項目已經失去了本地庫的軌道,無法加載與之關聯的庫。如果我嘗試建立&刷新包帶如何在更新Ubuntu之後重新建立R項目的默認庫?

R CMD INSTALL --no-multiarch --with-keep.source mypackage 

程序試圖安裝到庫 '的/ usr/local/lib目錄/ R /網站庫/',這將被拒絕:

ERROR: No permission to install to directory '/usr/local/lib/R/site-library/' 

至於我記得,當我重建我的包,該行指出,我的本地目錄中,我所有的圖書館都localted

installing to library ‘/home/user/R/x86_64-pc-linux-gnu-library/3.2’ 

顯然,在某種程度上r具有記不清了騙子的項目與圖書館之間的聯繫。

我試圖重新包括路徑以

.LibPaths("/home/user/R/x86_64-pc-linux-gnu-library/3.2") 

但是,就在我再次重建軟件包,安裝程序創建了x86_64的-PC-Linux的GNU庫3.3目錄。從那裏,它是無法找到關聯到我的程序庫,並引發另一個錯誤:

ERROR: dependencies '...', '...' are not available for package "mypackage" 

是否有程序恢復到它以前,所以我不必重新安裝的方式方法一切都從頭開始?

+0

我的答案是否提供了這方面的幫助?如果確實如此,請接受它。如果不是,你是如何解決它的?其他人可能想知道。 – r2evans

回答

1

默認情況下,R會將主要次要版本號添加到庫路徑(?.libPaths),理由很充分,假設從3.2跳轉到3.3導致效率或不兼容。這意味着該版本跳轉需要新的軟件包安裝。

如果您覆蓋此選項,則在3.2中組裝的軟件包可能無法在3.3中很好地播放。 (我不打算測試這個理論,如果你能反駁這個說法,我真的很感興趣,請回報給我)

順便說一句:你打電話給.libPaths似乎是可疑的:我不知道一個資本 - L型,並調用它時,你應該包括原來的路徑(除非你真正的意思是完全省略系R庫路徑),如:

.libPaths("/home/user/R/x86_64-pc-linux-gnu-library/3.2", .libPaths()) 

如果你選擇這樣做,任何錯誤,你可能會發現在其他軟件包中可能是由於這種不兼容性導致的,不一定會向開發人員報告。

另一種選擇是將3.2安裝的所有軟件包重新安裝到3.3庫路徑中。像這樣的東西應該有助於自動化過程:

# to reinstall packages installed in R-3.2 subdir into R-3.3 
install.packages(list.files(path = "~/R/x86_64-pc-linux-gnu-library/3.2")) 
相關問題