我想为我的数据框中的每个变量运行一个决策树,所以我正在使用它:
results_cont = list()
for (i in 2:(ncol(DATA)-1)) {
current_var = colnames(DATA[i])
current_result = ctree(TARGET ~ current_var, DATA, control = ctrl)
results_cont[[i]] = current_result
}
其中DATA是数据帧,其中第一列是ID,最后一列(TARGET)是我的二进制Target。
我一直收到这个错误:
Error in trafo(data = data, numeric_trafo = numeric_trafo, factor_trafo = factor_trafo, :
data class “character” is not supported
但我在mi数据帧中没有任何字符。
我的循环或其他东西有什么问题吗?
谢谢你们。
答案 0 :(得分:1)
由于您没有提供数据,我没有对此进行测试,但我相信您的问题就在于行
current_result = ctree(TARGET ~ current_var, DATA, control = ctrl)
这不起作用,因为current_var
只是一个字符串。您需要将公式构建为字符串,然后将其转换为公式 - 如下所示:
current_var = colnames(DATA[i])
FORM = as.formula(paste("TARGET ~ ", current_var))
current_result = ctree(FORM, DATA, control = ctrl)