打电话时如何避免RRuntimeError统计优化在python中使用rpy2的函数?

2024-04-24 16:55:01 发布

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

我正在打电话统计优化使用rpy2的python中的R函数。但是,我遇到了以下错误:

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

我主要遵循下面的optim函数示例: 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\u f(Beta)时,它返回一个正确的结果。我想知道是否有办法避免这样的问题。我刚刚了解了rpy2,非常感谢您的建议!先谢谢你


Tags: to函数inimporthtmlasnpfunction
1条回答
网友
1楼 · 发布于 2024-04-24 16:55:01

这可能是因为您的目标函数没有定义为npv1m1。你知道吗

rpy2中也可能有一个bug,因为错误通常应该作为某种警告出现。你知道吗

相关问题 更多 >