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))
хотя эта техника не поощряется..