2012-02-14 9 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

答えて

2

Joranのコメントは答えである - 私はmake.names()の存在を知らなかった

Joran、あなたのように答える場合答えあなたを正しいものとしてマークします。乾杯!

+0

HI Conorは、答えにmake.names()関数の使い方の例が含まれていれば素晴らしいと思います。 – user1603472

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

関連する問題