2012-02-14 20 views
5

Estoy tratando de hacer un árbol de decisión usando rpart usando un marco de datos que tiene ~ 200 columnas. Algunas de estas columnas tienen números en sus nombres, algunas tienen caracteres especiales (por ejemplo, "/"). Cuando intento para generar el árbol de recibo de error como los siguientes:Uso de columnas con caracteres especiales en fórmulas en R

R> gg.rpart <- rpart(nospecialchar ~ Special/char, data=temp, method="class") 
Error in eval(expr, envir, enclos) : object 'Special' not found 
R> gg.rpart <- rpart(nospecialchar ~ "Special/char", data=temp, method="class") 
Error in terms.formula(formula, data = data) : invalid model formula in ExtractVars 
R> gg.rpart <- rpart(nospecialchar ~ `Special/char`, data=temp, method="class") 
Error in `[.data.frame`(frame, predictors) : undefined columns selected 

¿Tengo que cambiar los nombres para acomodar R o hay alguna manera de pasar los nombres de columna con caracteres especiales a las fórmulas R?

+8

Cumplir con los deseos de R es tan fácil, una línea usando make.names() que no estoy seguro de que valga la pena usar los nombres no estándar, incluso si es posible. – joran

Respuesta

2

Joran 's en mi pregunta es la respuesta - que no sabía de la existencia de make.names()

Joran, si responde como una Respondo, te marcaré como correcto. ¡Aclamaciones!

+0

HI Conor, sería genial si su respuesta contuviera un ejemplo de cómo usar la función make.names(). – user1603472

6

Esto funciona:

comentario
dat <- data.frame(M=rnorm(10),'A/B'=1:10,check.names=F) 

> lm(M~`A/B`,dat) 

Call: 
lm(formula = M ~ `A/B`, data = dat) 

Coefficients: 
(Intercept)  `A/B` 
    -1.0494  0.1214 
+0

Esto funciona cuando puedo especificar las columnas individualmente. En el ejemplo que di hay más de 200 columnas, demasiadas para especificarlas individualmente. – Conor

Cuestiones relacionadas