как использовать rpy2 в среде packrat?

Я пытаюсь использовать пакет R, который я установил с помощью пакета R «packrat», который позволяет создать виртуальную среду, аналогичную virtuanlenv в python. Но у меня не получается.

В консоли с помощью R я могу успешно запустить следующий код:

cd /path/to/packrat/environment
R # this launch a R console in the packrat environment
library(mycustompackage)
result = mycustompackage::myfunc()
q()

Я хотел бы сделать то же самое, используя rpy2, но я не могу активировать среду packrat. Вот то, что я безуспешно тестировал.

from rpy2.robjects import r
from rpy2.robjects.packages import importr

packrat_dir = r.setwd('/path/to/packrat/environment')
importr('mycustompackage')
result = r.mycustompackage.myfunc()

Но он не работает на «importr», потому что не может найти пакет «mycustompackage». Либо безуспешно:

importr('mycustompackage', lib_loc='/path/to/packrat/environment')

Ни один:

os.environ['R_HOME'] = '/path/to/packrat/environment'
importr('mycustompackage', lib_loc ='/path/to/packrat/environment')  

Любое предложение о том, как использовать rpy2 с средами packrat?


person jean pierre huart    schedule 27.11.2018    source источник


Ответы (2)


Я не знаком с пакетом R packrat, но я заметил, что код bash + R и Python/rpy2 имеет тонкое различие, которое может иметь большое значение: в случае bash + R, когда R запускается, он уже находится в вашем каталог проекта packrat, тогда как в случае Python/rpy2 R запускается из другого каталога и перемещается в каталог проекта packrat с помощью setwd().

Я читаю, что пакет использует файл .Rprofile (https://rstudio.github.io/packrat/limitations.html), оцениваемый R во время запуска, если он находится в текущем каталоге. Я подозреваю, что проблема связана с тем, как используется packrat, а не с rpy2.

person lgautier    schedule 28.11.2018

Очень хорошее замечание (скрытый файл = забытый файл). Я узнал, как заставить его работать:

from rpy2.robjects import r
from rpy2.robjects.packages import importr

# Init the packrat environment
r.setwd('/path/to/packrat/environment')
r.source('.Rprofile')

# use the packages it contains
importr('mycustompackage')    
result = r.myfunc()

lgautier, вы сделали мой день, большое спасибо.

person jean pierre huart    schedule 28.11.2018