R - as.formula() не работает с ctree {party}?

Я получил Error: $ operator not defined for this S4 class когда я пытаюсь запустить ctree от party package, но только когда формула записана в виде строки, которую я преобразую с помощью as.formula(),

Ниже пример:

#This works fine :
y <- ctree(formula = quotation ~ minute + temp, data=test[[1]], controls = ctree_control(mincriterion = 0.99))

#While this doesn't :
x <- "ctree(formula = quotation ~ minute + temp, data=test[[1]], controls = ctree_control(mincriterion = 0.99))"

y <- as.formula(x)
Error: $ operator not defined for this S4 class

Моя конечная цель - создать функцию, которая перебирает список test создать несколько деревьев.

Любая идея?

1 ответ

Решение

ctree это функция, а не формула. formula класс объекта, полученного из функции '~' (Тильда). Вы можете узнать больше о формулах из help('~') а также help('formula'),

Самый распространенный способ использования as.formula преобразовать строку, представляющую синтаксис формулы, в объект формулы класса. Что-то вроде as.formula('y ~ x'), Также проверьте class(as.formula(y~x)),

В вашем случае вы сохранили строку, представляющую функцию ctree к переменной х. функция ctree содержит только строку, представляющую синтаксис формулы (quotation ~ minute + temp), но его нельзя привести к формуле (он не представляет формулу, он просто содержит строку синтаксиса формулы), поскольку он не соответствует синтаксису формулы.

Если вы хотите выполнить функцию из текста, вам нужно использовать eval(parse(text = x)) хотя эта техника не поощряется..

Другие вопросы по тегам