Я пытаюсь вызвать функцию stats.optim R внутри python, используя rpy2.Однако я столкнулся со следующей ошибкой:
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). См. Раздел «Вызов функций Python из R». Вот мой код:
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, и любые советы приветствуются!Заранее спасибо