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

时间:2017-03-02 14:15:50

标签: python r rpy2

我在Python 2.7中编写了一个函数:

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

我希望将此函数用作R中另一个函数的参数。更准确地说,我想使用以下函数执行计算Sobol'索引:

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

其中function_py_translated的R等价于function_py。 我正在尝试使用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))

主要问题是我不得不重新定义“+”。有办法解决这个问题吗?能够在没有事先转换的情况下传递任意函数吗?我想要分析的功能要复杂得多。 非常感谢你的时间

0 个答案:

没有答案