Как избежать RRuntimeError при вызове функции R stats.optim в Python с использованием rpy2? - PullRequest
2 голосов
/ 24 июня 2019

Я пытаюсь вызвать функцию 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, и любые советы приветствуются!Заранее спасибо

...