2017-09-06 2 views
0

Je veux courir un arbre de décision pour chaque variable dans mon dataframe, donc je suis en utilisant ceci:boucle dans ctree [R]

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 
} 

Où DATA est une trame de données où la première colonne est l'ID et la dernière colonne (TARGET) est ma cible binaire.

Je reçois cette erreur:

Error in trafo(data = data, numeric_trafo = numeric_trafo, factor_trafo = factor_trafo, : 
    data class “character” is not supported 

Mais je n'ai pas de caractère à mi dataframe.

Y at-il un problème avec ma boucle ou autre chose?

Merci les gars.

Répondre

1

Puisque vous ne fournissez pas de données, je n'ai pas testé, mais je crois que votre problème est la ligne
current_result = ctree(TARGET ~ current_var, DATA, control = ctrl)
Ce ne fonctionne pas parce current_var est juste une chaîne de caractères. Vous devez construire la formule comme une chaîne et ensuite la convertir en une formule - comme ceci:

current_var = colnames(DATA[i]) 
FORM = as.formula(paste("TARGET ~ ", current_var)) 
current_result = ctree(FORM, DATA, control = ctrl) 
+0

Cela a fonctionné, merci! – rjara