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