【问题标题】:Calling functions from within R packages in Python using importr使用 importr 从 Python 中的 R 包中调用函数
【发布时间】:2018-09-21 10:15:05
【问题描述】:

我在 R 中使用称为 mRMRe 的特征选择算法,但我需要从 Python 中调用它。我已经成功安装了这个包并且能够从 Python 中调用它。我需要访问 R mRMRe 包中的一些函数,例如 mRMR.data 以将数据帧转换为算法所需的格式。

from rpy2.robjects.packages import importr
utils = importr('utils') #-- Only once.
utils.install_packages('mRMRe')

# Now we begin by loading in the R packages
pymRMR = importr('mRMRe')

pymRMR
Out[53]: rpy2.robjects.packages.Package as a <module 'mRMRe'>

但是,当我尝试调用它的函数 mRMR.data 时,我得到一个错误:

AttributeError: module 'mRMRe' has no attribute 'mRMR'

如果我尝试使用不同的库,情况也是如此:

datasets = importr('datasets')
datasets.data.fetch('mtcars')
Traceback (most recent call last):

  File "<ipython-input-56-b036c6da58e1>", line 2, in <module>
    datasets.data.fetch('mtcars')

AttributeError: module 'datasets' has no attribute 'data'

我从enter link description here得到了这个数据集部分

我不确定我做错了什么。我之前从 mrfDepth 导入了 R 的 medcouple 函数,如下所示:

import rpy2.robjects as ro
#now import the importr() method
from rpy2.robjects.packages import importr
utils = importr('utils') #-- Only once.
utils.install_packages('mrfDepth')
# Now we begin by loading in the R packages
mrfdepth = importr('mrfDepth')
mc = mrfdepth.medcouple(yr)[0]
return mc

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python r rpy2 r-package


    【解决方案1】:

    我曾经导入一些 R 包并在我的 python 代码中使用它们,但最近我即兴创作了一种方法,您可以简单地使用 R 代码并为其分配所需的任务。看看这里https://stackoverflow.com/a/55900840/5350311 它可能对您的情况有用。

    【讨论】:

      【解决方案2】:

      您只是在导入基本模块,并且需要完全导入它。你会认为 Python 会自动执行此操作,但显然它不会。见this SO answer

      from mRMRr import *
      from datasets import *
      

      编辑:啊,是的,这适用于显式 python 模块。我认为调用子包函数的语法可能不同。试试这个。

      import rpy2.robjects.packages as packages
      datasets = packages.importr('datasets')
      mtcars = packages.data(datasets).fetch('mtcars')['mtcars']
      

      【讨论】:

      • @ShuvayanDas 看看新语法是否有帮助。我为我加载了mtcars
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多