проблемы с rpy2, передача nls list () в качестве аргумента от python к R

1

Я пытаюсь подстроить нелинейную кривую, используя rpy2 из массива numpy, но застревает, поскольку я не знаю, как передать аргумент "start" на стороне R. Я использую R 2.12.1 и python 2.6.6

Error in function (formula, data = parent.frame(), start, control = nls.control(),  : 
parameters without starting value in 'data': responsev, predictorv
Traceback (most recent call last):
File "./employmentsHoro.py", line 279, in <module>
nls.nls2(formula=formula, data=dataf, start=mylist)
File "/usr/lib/python2.6/dist-packages/rpy2/robjects/functions.py", line 83, in __call__
return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/rpy2/robjects/functions.py", line 35, in __call__
res = super(Function, self).__call__(*new_args, **new_kwargs)
rpy2.rinterface.RRuntimeError: Error in function (formula, data = parent.frame(),start, control = nls.control(),  : 
parameters without starting value in 'data': responsev, predictorv

Может ли кто-нибудь помочь мне определить, как передать объект list() в формулу nls?

соответствующая часть моего кода такова:

import rpy2.robjects as robjects
from rpy2.robjects import DataFrame, Formula
import rpy2.robjects.numpy2ri as npr
import numpy as np
from rpy2.robjects.packages import importr
nls = importr('nls2')
stats = importr('stats')

mylist = robjects.r('list(a=700,b=0.8,c=200000)')

dataf = DataFrame({'responsev': professions, 'predictorv': totalEmployment})
starter= DataFrame({'a':700,'b':0.80,'c':200000})
formula = Formula('responsev ~I( a*(predictorv/c)^b )/( 1+( predictorv/c )^b )')
nls.nls2(formula=formula, data=dataf, start=starter)
Теги:
arguments
rpy2
nls

1 ответ

0
Лучший ответ

Основная ошибка заключается в следующем:

Error in function (formula, data = parent.frame(), start, control = 
nls.control(),  : parameters without starting value in 
    'data': responsev, predictorv

Где объявляются переменные профессии? и DataEmployment? кажется, что у них нет стартовой ценности, возможно, вам нужно изменить/трансформировать что-то, что R понимает?

  • 0
    Ну да ... Я прошу прощения, но профессии и общая занятость - это бесчисленные списки
  • 0
    Граци Фабрицио !!! Вы были правы, все, что мне нужно было сделать, - это засветиться надписью robjects.IntVector (профессия) и так далее!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню