Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用importr从Python中的R包中调用函数_Python_R_Rpy2_R Package - Fatal编程技术网

使用importr从Python中的R包中调用函数

使用importr从Python中的R包中调用函数,python,r,rpy2,r-package,Python,R,Rpy2,R Package,我在R中使用了一个名为MRE的特性选择算法,但我需要从Python中调用它。我已经成功地安装了这个包,并且能够从Python调用它。我需要访问R mRMRe包中的一些函数,如mRMR.data,以将数据帧转换为algo所需的格式 from rpy2.robjects.packages import importr utils = importr('utils') #-- Only once. utils.install_packages('mRMRe') # Now we begin by l

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

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'>
如果我尝试使用不同的库,情况也是如此:

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'

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

您只导入基本模块,需要完全导入。你可能会认为Python会自动做到这一点,显然它不会。看

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

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

我曾经导入一些R包并在python代码中使用它们,但最近我临时提出了一种方法,您可以简单地使用R代码并为其提供所需的任务。看看这里,它对你的情况很有用

@ShuvayanDas看看新语法是否有用。我为我装了
mtcars
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
from mRMRr import *
from datasets import *
import rpy2.robjects.packages as packages
datasets = packages.importr('datasets')
mtcars = packages.data(datasets).fetch('mtcars')['mtcars']