在使用rpy2的python中调用R stats.optim函数时,如何避免RRuntimeError?

时间:2019-06-24 14:09:20

标签: python r rpy2

我正在尝试使用rpy2在python中调用stats.optim R函数。但是,我遇到以下错误:

RRuntimeError: Error in (function (par, fn, gr = NULL, ..., method = c("Nelder-Mead",  : objective function in optim evaluates to length 0 not 1

我从这里主要遵循了优化函数示例: http://rpy.sourceforge.net/rpy2/doc-2.2/html/rinterface.html)。请参阅“从R调用Python函数”一节 这是我的代码:

from rpy2.robjects import r
import rpy2.robjects as robjects
import rpy2.rinterface as ri


# Function to be optimized, v1 is a 1-dimensional numpy array and m1 is n 
# by 3 numpy matrix
def f(beta):
    return np.sum(np.square((np.divide(v1,np.matmul(m1,beta))-1)))

# convert python function to R function
r_f = ri.rternalize(f)

Beta =  robjects.FloatVector((0,1,0))
res = r.optim(Beta, r_f)

我确保所定义的函数f是正确的,并且可以将其转换为r函数对象。例如,当我调用r_f(Beta)时,它将返回正确的结果。我想知道是否有办法避免这种问题。我刚刚了解了rpy2,任何建议都值得赞赏!预先谢谢你

1 个答案:

答案 0 :(得分:0)

这很可能是因为未定义由于npv1m1而失败的目标函数。

rpy2中也可能存在一个buglet,因为该错误通常应作为某种警告来出现。