R,Python:在rpy2上安装软件包

Ric*_*son 9 python import r package

R在我的Python脚本中通过rpy2库使用,我需要一个不在R的默认安装中的软件包.我该如何安装它?

install.packages("DirichletReg", repos="http://r-forge.r-project.org")
Run Code Online (Sandbox Code Playgroud)

不行.

在Python上:

>>> install.packages("DirichletReg", repos="http://r-forge.r-project.org") 
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'install' is not defined
Run Code Online (Sandbox Code Playgroud)

来自R:

> install.packages("DirichletReg", repos="http://r-forge.r-project.org")
Installing package(s) into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning message:
In getDependencies(pkgs, dependencies, available, lib) :
  package ‘DirichletReg’ is not available (for R version 2.14.1)
Run Code Online (Sandbox Code Playgroud)

Aar*_*all 36

里卡多的回答不再适用.

要从Python安装:

from rpy2.robjects.packages import importr
utils = importr('utils')
utils.install_packages('DirichletReg')
Run Code Online (Sandbox Code Playgroud)

utils软件包是R.utils其文档可在此处找到的软件包:https://CRAN.R-project.org/package=R.utils

截至我上次编辑时,文档仍然说要执行此操作.


小智 5

运行时pytest,Aaron 的回答使我的 Python 挂起,R 不断给出错误消息,可能是因为:

install_packages()没有先选择镜像的情况下调用将需要用户交互地选择镜像。

根据rpy2 文档,我使用了这个有效的方法:

from rpy2 import robjects
import rpy2.robjects.packages as rpackages

utils = rpackages.importr('utils')
utils.chooseCRANmirror(ind=1)
utils.install_packages("DirichletReg")
DirichletReg = rpackages.importr("DirichletReg")
Run Code Online (Sandbox Code Playgroud)


Ric*_*mil -4

这个怎么样

>>> import rpy2.interactive as r
>>> r.importr("utils")
>>> package_name = "DirichletReg"
>>> r.packages.utils.install_packages(package_name)
Run Code Online (Sandbox Code Playgroud)

  • 不再起作用了。请参阅亚伦的答案,目前有效。 (5认同)