如果我有一个R包是我从本地位置~/mypkg
的另一个存储库中派生的,是否可以直接从该位置加载而不需要使用install.packages
。我正在寻找的功能类似于Python中的site.addsitedir
。
我尝试了以下几种变化:
library('mypkg', lib.loc = "/home/ncw135/Documents/mypkg")
和
devtools::load_all('/home/ncw135/Documents/mypgk')
由于以下原因而失败:
Loading mypkg
Error in get(method, envir = home) :
cannot open file '/home/ncw135/R/x86_64-pc-linux-gnu-library/3.6/mypkg/R/mypkg.rdb': No such file or directory
In addition: Warning messages:
1: In .registerS3method(fin[i, 1], fin[i, 2], fin[i, 3], fin[i, 4], :
restarting interrupted promise evaluation
2: In get(method, envir = home) :
restarting interrupted promise evaluation
尝试使用其功能之一后。
我要更改的仓库是here
答案 0 :(得分:1)
否,您必须先安装软件包才能安装它。如果您不希望它永久安装,则可以设置一个临时库,将其安装在此处,然后从此处进行加载,如下所示:
templib <- tempfile()
dir.create(templib)
.libPaths(templib)
install.packages("~/mypkg", lib = templib, type = "source", repos = NULL)
之后,library(mypkg)
(使用~/mypkg/DESCRIPTION
中给出的任何软件包名称)将加载临时安装的软件包。关闭会话时,它将被删除(连同此后安装的所有其他软件包一起进入同一个库),并且templib
被自动删除。 (如果您的会话崩溃,有可能templib
不会被删除,但以后的会话中不会重新使用它。)