我正在ctree
使用partykit
.
library(rpart)
library(partykit)
fit <- ctree(Kyphosis ~ Age + Number + Start, data=kyphosis)
plot(fit, terminal_panel=node_barplot)
我想为每个条形图添加一条额外的水平线,指示整个数据集的平均响应,即此处为 0.79。
prop.table(table(kyphosis$Kyphosis))
absent present
0.7901235 0.2098765
方法:我开始修改node_barplot
传递给terminal_panel
参数的函数。但是源代码很长,几乎没有注释。所以我试着一步一步地去,把函数剥离到它的前两行代码(加上一个额外的打印命令)。但是,如果我运行它,对象y
是NULL
并且会引发错误。
node_barplot2 <- function(obj, ...)
{
y <- obj$fitted[["(response)"]] # first lime from node_barplot source
print(y)
stopifnot(is.factor(y) || isTRUE(all.equal(round(y), y)) || is.data.frame(y))
}
plot(fit, terminal_panel=node_barplot2)
> Error in round(y) : Non-numeric argument in mathematical function
作为它的原始代码,我不太明白我在哪里出错以及如何绘制水平线。有任何想法吗?