2

当我Error: $ operator not defined for this S4 class尝试ctree从.party packageas.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以创建多棵树的函数。

任何想法 ?

4

1 回答 1

1

ctree是函数而不是公式。formula是从函数'~'(波浪号)产生的对象的类。help('~')您可以从和中了解有关公式的更多信息help('formula')

最常用的方法as.formula是将表示公式语法的字符串转换为类公式的对象。类似的东西as.formula('y ~ x')。另外,检查class(as.formula(y~x)).

在您的情况下,您将表示函数的字符串保存ctree到变量 x。函数ctree只包含一个表示公式语法的字符串 ( quotation ~ minute + temp) 但它不能被强制转换为公式(它不表示公式,它只包含一个公式语法字符串),因为它不遵循公式语法。

如果你想从你需要使用的文本中执行一个函数,eval(parse(text = x))虽然不鼓励这种技术..

于 2015-09-10T14:05:34.450 回答