2012-11-24 7 views
0

rpart의 수식을 준비하려면 목록의 열 이름을 연결 하시겠습니까?rpart에 대한 데이터 공식화

이름 (log_data)을 연결하려는 경우 log_data은 60 개의 벡터로 구분되는 벡터 목록이므로 원하는 열의 이름을 형식으로 입력하여 rpart의 수식에 넣을 수 있습니다. .. rpart(A ~ B + C + D + E ,log_data)처럼 여기에서 나는 A, B, C, D, E가 추출해야하는 열 이름 인 전체 문자열로 수식 = "A ~ B + C + D + E"를 추출하려고합니다. log_data를 사용하거나 목록에서 트리를 가져 오는 더 좋은 방법이 있습니다.
나는 시도는

a <- names(log_data) 
rpart(a[1] ~ a[2] + a[3] + a[4], log_data) 

오류

Error in paste(temp, yprob[, i], sep = " ") : subscript out of bounds 

을 얻는 곳

a[2] 

[1] "X.u.crpice..vin20f1..vol.vin20f1v1.r_credit_credshare2...91...90." 

a[3] 

[1] "X.u.crpice..vin20f1..vol.vin20f1v1.r_credit_credshare2...92...90." 

c<-paste(a[1], "~", sep="") 

rpart_formula <- as.formula(paste(c, paste(a[2:60], collapse = " + "), sep = "")) 

rpart(rpart_formula,log_data) 

그냥 때문에 너무 오래 열 이름의 rpart에서 무한 루프에 가고 또는 n 될 수있다 = 60

모든 열 이름을 첨부 할 수 있습니까 colnames (log_data) < - c (?), "?"에 무엇을 넣어야합니까? 그러면 n = 60으로 그릴 수 있습니다.

+0

'O (1)'싶은 생각? 나는 당신이'O (1)'을 의미한다고 가정한다. – amit

+0

네,하지만 그것을 구현하는 데 적절한 방법이 있다면 그것은 ohkk가 될 것입니다. – Aashu

+0

작은 솔루션 세트에 대해 새 솔루션이 제대로 작동합니까? 어떤 길이로 부서 지나요? 'rpart (response ~., data = log_data)'가 작동합니까? (무한 루프가 아니라 오랜 시간이 걸리지 않는다는 것을 어떻게 알 수 있습니까?) –

답변

1

난 당신이

shortnames <- paste0("c",seq(ncol(log_data))) 
names(log_data) <- shortnames 
form <- reformulate(paste(shortnames[2:4],collapse="+"), 
        response=shortnames[1]) 
rpart(form,log_data) 
+0

나는 이것을 가지고 있지만 이것은 무한 루프에, 나는이 alsoc <- 붙여 넣기 (a [1], "~", sep = "") 구현했습니다. rpart_formula "- as.formula (붙여 넣기 (붙여 넣기 (붙여 넣기 (a [2:60], 붕괴 ="+ "), sep =" ")) – Aashu

+0

재현 가능한 예없이 어떤 일이 잘못되었는지 말하기 어렵습니다. 대안 솔루션도 실패합니까, 아니면 작동합니까? –

+0

아니, 그냥 배열에 의한 오류 때문일 수도 정수 에서처럼 열 이름을 변경할 수 없습니다 또한 – Aashu

관련 문제