将party package用于决策树图时,是什么导致此错误消息?

时间:2018-08-27 06:06:43

标签: r decision-tree party

我正在使用decision tree包绘制party。运行plot(tree)函数时,它将绘制decision tree。但是,我想更改node labels的字体大小,并且正在使用以下代码:

tree<-ctree(Attrition~MaritalStatus+Age_group,data=traindf1)
plot(tree)
text(tree, cex = 0.5)

运行最后一行代码时,出现以下错误消息:

Error in as.double(y) : 
   cannot coerce type 'S4' to vector of type 'double'

我看了一下这篇文章,但它似乎与另一个软件包有关: Error in as.double(y) : cannot coerce type 'S4' to vector of type 'double'

我该如何解决?

1 个答案:

答案 0 :(得分:2)

请注意,您可能应该使用partykit而不是party,因为前者在调整树的图形方面提供了更大的灵活性。另外请注意,partypartykit不应一起使用,因为ctreepartykit中的party对象是不同的。

partykit::ctreeparty::ctree都没有text方法来添加/更改文本标签。也许当您读到plot + text时就遇到过rpart语法,这是一个完全不同的R包,用于通过决策树进行递归分区/分类。

这是两种方法的并行示例

partykit::ctree

library(partykit)
fit <- ctree(Ozone ~ ., data = airquality[complete.cases(airquality), ])

enter image description here

您可以通过gp函数参数来更改字体大小,例如

plot(fit, gp = gpar(fontsize = 4))

enter image description here

rpart::rpart

library(rpart)
fit <- rpart(Ozone ~ ., data = airquality[complete.cases(airquality), ])
plot(fit)
text(fit)

您可以在此处通过cex中的text参数更改字体大小。

enter image description here