问题描述
我想为 for
循环创建一个列表,而不是像下面那样将它用于 ctree
。但我不能。
我收到了一些错误,例如“不支持字符”,即使我将列表更改为 factor
我想用 val
列表更改 y
变量,用于 for
循环。
有没有办法让它发挥作用?
y <- c("A","B","C")
x <- as.factor(y)
for(val in x) {
ctree_model<- ctree(FTR ~ val,data = train,controls=ctree_control(minsplit=30,minbucket=10,maxdepth=10))
}
解决方法
公式应使用 paste
或 reformulate
构建。此外,用于存储输出的 'ctree_model' 可以是一个 list
,其中 list
的每个元素存储对应于 x 的 'val' 而不是覆盖的模型
ctree_model <- vector('list',length(x))
names(ctree_model) <- levels(x)
for(val in levels(x)) {
ctree_model[[val]] <- ctree(reformulate(val,response = 'FTR'),data = train,controls = ctree_control(minsplit = 30,minbucket = 10,maxdepth =10))
}