无法在 python(Jupyter 笔记本)中安装 R 包?

Unable to install R package in python (Jupyter notebook)?

我正在尝试在 jupyter notebook 的 python 3x 上安装 R 包。

我明白了,我要pip install rpy2,已经成功了

当我调用 R 中的内置函数(如 ccf 或其他简单问题)时,这工作正常。

# Call function from R
import os
os.environ['R_USER'] = 'D:\Anaconda3\Lib\site-packages\rpy2'
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
pandas2ri.activate()

但是,如果我想安装DirichletRegvars这样的包,那不是那么容易,尤其是可能需要下载更多的包。

我确实按照

中描述的link

R, Python: install packages on rpy2

from rpy2.robjects.packages import importr
utils = importr('utils')
utils.install_packages('DirichletReg')

但收到以下 RuntimeError

---------------------------------------------------------------------------
RRuntimeError                             Traceback (most recent call last)
<ipython-input-16-32acf37e1ef9> in <module>()
      1 from rpy2.robjects.packages import importr
      2 utils = importr('utils')
----> 3 utils.install_packages('DirichletReg')

D:\Anaconda3\lib\site-packages\rpy2\robjects\functions.py in __call__(self, *args, **kwargs)
    176                 v = kwargs.pop(k)
    177                 kwargs[r_k] = v
--> 178         return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
    179 
    180 pattern_link = re.compile(r'\link\{(.+?)\}')

D:\Anaconda3\lib\site-packages\rpy2\robjects\functions.py in __call__(self, *args, **kwargs)
    104         for k, v in kwargs.items():
    105             new_kwargs[k] = conversion.py2ri(v)
--> 106         res = super(Function, self).__call__(*new_args, **new_kwargs)
    107         res = conversion.ri2ro(res)
    108         return res

RRuntimeError: Error in (function (pkgs, lib, repos = getOption("repos"), contriburl = contrib.url(repos,  : 
py2/R/win-library/3.3'\Anaconda3\Lib\site-packages

有没有人早些时候发现这个困难?

Jupyter 笔记本用户(Windows)

1) 看来我经历的是R库和python库不在同一个目录下

2) 好像R里面需要先安装一些包

解决这个问题需要 2 个主要步骤,一个在 R 中,另一个在 Python Jupyter notebook

第 1 步:转到 R (Rstudio)

代码:

install.packages('DirichletReg', dep = TRUE)

这会告诉你

package ‘httpuv’ successfully unpacked and MD5 sums checked
package ‘xtable’ successfully unpacked and MD5 sums checked
package ‘sourcetools’ successfully unpacked and MD5 sums checked
package ‘htmlwidgets’ successfully unpacked and MD5 sums checked
package ‘shiny’ successfully unpacked and MD5 sums checked
package ‘miscTools’ successfully unpacked and MD5 sums checked
package ‘rgl’ successfully unpacked and MD5 sums checked
package ‘maxLik’ successfully unpacked and MD5 sums checked
package ‘DirichletReg’ successfully unpacked and MD5 sums checked

然后将包加载到 R 中

> loadNamespace('DirichletReg')

它将给出如下输出:

<environment: namespace:DirichletReg>

通过在 R 中编码仔细检查目录:

R.home()

检查输出为

"C:/PROGRA~1/R/R-33~1.3"

绝招!!!

这不是 R 将包下载到的地方。您可以通过在 R:

中编码来查看它正在下载到哪里
.libPaths()

说结果是 XYZ(复制这个)

第 2 步:转到 Jupyter 笔记本

检查当前的 R 目录(我假设你已经安装了 rpy2)

import rpy2
import os
os.environ['R_USER'] = 'D:\Anaconda3\Lib\site-packages\rpy2'
from rpy2.robjects.packages import importr
base = importr('base')
print(base.R_home())

输出将是

"C:/Program Files/R/R-3.3.3"

因此与包在 XYZ 中的 R 库目录不匹配

因此要导入或安装新包,只需

DirichletReg = importr("DirichletReg", lib_loc = "XYZ")

这通常会像我对其他所有人一样有效

mi = importr("mi", lib_loc = "XYZ")
ggplot2 = importr("ggplot2", lib_loc = "XYZ")

但它对 DirichletReg 不起作用,它给了我错误

RRuntimeError: Error in loadNamespace(name) : there is no package called 'ggplot2'