我用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))
主要的问题是我必须重新定义“+”。有办法解决这个问题吗?不需要事先变换就能传递任意函数?我要分析的函数要复杂得多。 非常感谢您抽出时间
目前没有回答
相关问题 更多 >
编程相关推荐