Как загрузить пакет R, который существует локально на моем жестком диске? - PullRequest
0 голосов
/ 29 июня 2019

Если у меня есть пакет R, который я разбудил из другого репозитория в локальном расположении ~/mypkg, возможно ли загрузить его непосредственно из этого местоположения без необходимости использования install.packages.Функциональность, которую я ищу, похожа на site.addsitedir в Python.

Я пробовал несколько вариантов:

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

после попытки использовать одну из их функций.

адресация комментариев

Репозиторий, в который я хочу внести изменения, здесь

1 Ответ

1 голос
/ 29 июня 2019

Нет, вы не можете загрузить пакет без его установки. Если вы не хотите, чтобы он был постоянно установлен, вы можете настроить временную библиотеку, установить ее там и загрузить оттуда следующим образом:

templib <- tempfile()
dir.create(templib)
.libPaths(templib)
install.packages("~/mypkg", lib = templib, type = "source", repos = NULL)

После этого library(mypkg) (используя имя пакета, указанное в ~/mypkg/DESCRIPTION) загрузит временно установленный пакет. Он будет удален (вместе с любыми другими пакетами, которые вы установите после этого в ту же библиотеку), когда вы закроете сеанс, и templib будет автоматически удален. (Возможно, templib не будет удалено в случае сбоя сеанса, но он не будет использоваться повторно в следующем сеансе.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...