Python函数作为使用rpy2的R函数的参数

2024-09-27 20:20:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python 2.7编写了一个函数:

# Python #
def function_py(par):
    #something happens
    return(value) 

我想用这个函数作为R中另一个函数的参数。更准确地说,我想用下面的函数来计算Sobol'index:

# R #
library('sensitivity')
sobol(function_py_translated, X1,X2)

其中function_py_translated将b表示function_py的R等价物。 我正在尝试使用rpy2模块,对于一个简单的函数,我可以制作一个工作案例:

import rpy2.rinterface as ri
import rpy2.robjects.numpy2ri
sensitivity = importr('sensitivity')

radd = ri.baseenv.get('+')
def costfun(X):
    a = X[0]
    b = X[1]
    return(radd(a,b))

costfunr=ri.rternalize(costfun)
X1 = robjects.r('data.frame(matrix(rnorm(2*1000), nrow = 1000))')
X2 = robjects.r('data.frame(matrix(rnorm(2*1000), nrow = 1000))')

sobinde = sensitivity.sobol(costfunr,X1,X2)
print(sobinde.__getitem__(11))

主要的问题是我必须重新定义“+”。有办法解决这个问题吗?不需要事先变换就能传递任意函数?我要分析的函数要复杂得多。 非常感谢您抽出时间


Tags: 函数pyimportreturndeffunctionx1x2

热门问题