2012-02-14 40 views
5

Tôi đang cố gắng tạo cây quyết định bằng cách sử dụng rpart bằng cách sử dụng khung dữ liệu có ~ 200 cột. Một số cột có số trong tên của chúng, một số có các ký tự đặc biệt (ví dụ: "/"). Khi tôi cố gắng tạo ra các cây tôi nhận được lỗi như những người dưới đây:Sử dụng các cột có các ký tự đặc biệt trong các công thức trong 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 

Tôi có phải thay đổi tên để phù hợp với R hoặc là có một số cách để vượt qua các tên cột với các nhân vật đặc biệt để công thức R?

+8

Tuân thủ mong muốn của R rất dễ dàng, một dòng sử dụng make.names() mà tôi không chắc là nó đáng để sử dụng tên không chuẩn, ngay cả khi có thể. – joran

Trả lời

2

Joran 's bình luận về câu hỏi của tôi là câu trả lời - Tôi không biết về sự tồn tại của make.names()

Joran, nếu bạn trả lời như một tôi sẽ đánh dấu bạn là đúng. Chúc mừng!

+0

HI Conor, sẽ là tuyệt vời nếu câu trả lời của bạn chứa một ví dụ về cách sử dụng hàm make.names(). – user1603472

6

này hoạt động:

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

Điều này hoạt động khi tôi có thể chỉ định các cột riêng lẻ. Trong ví dụ tôi đưa ra có hơn 200 cột, quá nhiều để chỉ định riêng lẻ. – Conor

Các vấn đề liên quan