Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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
Python 如何使用rpy2访问R包的内部函数?_Python_R_Rpy2 - Fatal编程技术网

Python 如何使用rpy2访问R包的内部函数?

Python 如何使用rpy2访问R包的内部函数?,python,r,rpy2,Python,R,Rpy2,我正在使用rpy2在Python中使用R的GMCM包。GMCM包的一些内部函数只能使用::操作符访问。例如,qgmm.marginal不能以常规方式使用rpy2访问 以下是我的Python代码: import rpy2 import rpy2.robjects as robjects from rpy2.robjects.packages import importr gmcm_r = importr('GMCM') data_r = gmcm_r.SimulateGMCMData(n =

我正在使用rpy2在Python中使用R的
GMCM
包。GMCM包的一些内部函数只能使用
::
操作符访问。例如,
qgmm.marginal
不能以常规方式使用rpy2访问

以下是我的Python代码:

import rpy2

import rpy2.robjects as robjects
from rpy2.robjects.packages import importr  
gmcm_r = importr('GMCM')
data_r = gmcm_r.SimulateGMCMData(n = 100, m =3, d=2)

print(gmcm_r.Uhat(data_r.rx2('z'))) # works
print(gmcm_r.qgmm.marginal(gmcm_r.Uhat(data_r.rx2('z')))) # does not work
# AttributeError: module 'GMCM' has no attribute 'qgmm'
相应的R代码为

library(GMCM)
data = SimulateGMCMData(n = 100, m =3, d=2)
u = Uhat(data$z) #works
GMCM:::qgmm.marginal(u, theta)#works
如何使用rpy2访问这些内部函数?

您有两个错误:

  • 您保留了一个R语法点(
    ),您应该将其转换为python语法下划线(
    )。这就是你观察到的错误的原因
  • 但是,一旦修复了该错误,您就会发现一个新错误:您没有为尝试调用的函数指定
    theta
    参数
  • 这里有一个可行的解决方案:

    导入rpy2
    将rpy2.robjects作为robjects导入
    从rpy2.robjects.packages导入导入
    gmcm_r=importr('gmcm')
    数据=gmcm模拟数据(n=100,m=3,d=2)
    印刷(gmcm_r.Uhat(数据_r.rx2('z')))#作品
    ##[输出省略]
    u=gmcm_r.Uhat(数据_r.rx2('z'))
    θ=数据。rx2('θ')##需要指定θ
    #打印(gmcm_r.qgmm.marginal(u,θ))35;#需要在qgmm后更改网点
    将(gmcm_r.qgmm_marginal(u,θ))打印到下划线
    [,1]        [,2]
    [1,]   8.660195  0.26664200
    [2,]   7.626162  7.86828143
    [3,]   7.862762  8.75474254
    ##[输出被截断]