2012-02-14 104 views
5

我試圖使用rpart使用具有〜200列的數據框來製作決策樹。其中一些列的名稱中有數字,一些列有特殊字符(例如「/」)。當我嘗試生成的樹,我得到的錯誤,如下面的:在公式中使用具有特殊字符的列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 

我一定要改變名稱,以適應R或有一些方式來傳遞列名有特殊字符至R公式?

+8

遵守R的願望是如此簡單,一行使用make.names(),我不確定它是否值得使用非標準名稱,即使這是可能的。 – joran 2012-02-14 06:16:47

回答

2

Joran的關於我的問題的評論是答案 - 我不知道make.names()的存在

Joran,如果你作爲一個答覆回答我會標記你是正確的。乾杯!

+0

如果你的答案包含了一個如何使用make.names()函數的例子,那麼HI Conor會很好。 – user1603472 2016-06-19 19:42:27

6

這工作:

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

這個工程,當我可以單獨指定列。在我給出的例子中,有200多列,單獨指定太多。 – Conor 2012-03-25 20:29:11