我有一个由

library(party)
model.cart <- ctree(qtcf ~ ., data=training)


就我而言,我想在我的训练集(training)和测试集(testing)中创建一个新变量,以指示特定观察的终端节点号。

显然,可以像这样手动进行:

training$ctreegroup[((training$sex == 'female') & (training$rs12143842.y>0)
                    & (training$rs735951>0))] <- 'node14'
testing$ctreegroup[((testing$sex == 'female') & (testing$rs12143842.y>0) &
                      (testing$rs735951>0))] <- 'node14'


但是,有没有一种聪明的方法可以自动执行此操作,而无需手动编程所有决策?

最佳答案

正如的建议

training$node_placement <- where(model.cart)


为训练集工作。不幸的是,它不适用于测试集,因为

testing$node_placement <- where(model.cart)


产生了错误

Error in `$<-.data.frame`(`*tmp*`, ctreegroup, value = c(22L, 22L, 23L,  :
  replacement has 4440 rows, data has 1478


所以功能在哪里不重新检查数据

关于r - ctree。将分类节点号放入变量中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46789491/

10-10 10:29