Как указать управляющий аргумент функции loess R с помощью ryp2 в python? - PullRequest
1 голос
/ 22 июня 2019

Я пытаюсь вызвать функцию loess R из Python, используя ryp2. Я столкнулся со следующей ошибкой, когда попытался указать аргумент «control» в r.loess: объект «SignatureTranslatedFunction» не имеет атрибута «control».

В R я использовал

S_fit <- loess(y ~ x, data = df, degree = 2, span = d, 
               control = loess.control(surface = "direct")) 

, который работал.

В своем коде Python я попытался

loess_fit = r.loess("y ~ x", data=df, degree = 2, span = d, control=r.loess.control(surface = "direct"))

Сообщение об ошибке, которое я получил, было

AttributeError: 'SignatureTranslatedFunction' object has no attribute 'control'

Я смущен этой ошибкой, поскольку у функции loess в R явно есть параметр управления, который пользователь может указать. Я также попробовал следующий код

loess_fit = r.loess("y ~ x", data=df, degree = 2, span = d, surface = "direct") 

Эта строка кода не выдавала никакой ошибки, но лосс не выводится. Если я не укажу аргумент управления, мой код будет работать гладко.

Здесь AS - кадр данных панд

from rpy2.robjects import r
import rpy2.robjects as robjects

x=AS["x"].values
y=AS["y"].values
x = robjects.FloatVector(list(x))
y = robjects.FloatVector(list(y))
df = robjects.DataFrame({"x": x, "y": y})
loess_fit = r.loess("y ~ x", data=df, degree = 2, span = d, control=r.loess.control(surface = "direct"))
wv_vec= robjects.FloatVector(list(order["wv"]))
B1 =r.predict(loess_fit, wv_vec)

Надеюсь, у меня есть способ указать параметры управления. Я новичок в ryp2, и любой совет будет принят!

Обновление: я думаю

loess_fit = r.loess("y ~ x", data=df, degree = 2, span = d, surface = "direct") 

на самом деле работал! Не знаю, почему это не сработало в начале. Но я до сих пор не понимаю, почему ryp2 не может найти параметры управления

...