【问题标题】:rpy2 problems, nls passing list() as argument from python to Rrpy2问题,nls将list()作为参数从python传递给R
【发布时间】:2011-04-01 07:37:30
【问题描述】:

我正在尝试使用 numpy 数组中的 rpy2 拟合非线性曲线,但由于我不知道如何在 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)

【问题讨论】:

    标签: python r arguments rpy2 nls


    【解决方案1】:

    主要错误是这个:

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

    在哪里声明了可变职业?和数据就业? 似乎它们没有起始值,也许您必须更改/转换 R 明白吗?

    【讨论】:

    • 嗯,是的......我很抱歉,但专业和 totalEmployment 是 numpy 列表
    • 感恩法布里齐奥!!!你是对的,我所要做的就是用 robjects.IntVector(professions) 等方式将 wrao mu numpy 点亮!
    • 在这里更明确地说明您的解决方案会很有用,例如提供正确版本的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 2021-10-18
    相关资源
    最近更新 更多