我正在打电话统计优化使用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,非常感谢您的建议!先谢谢你
这可能是因为您的目标函数没有定义为
np
、v1
和m1
。你知道吗在
rpy2
中也可能有一个bug,因为错误通常应该作为某种警告出现。你知道吗相关问题 更多 >
编程相关推荐