2012-11-24 2 views
0

Объединить столбцы имя списка, чтобы подготовить формулу для rpart?Сформулировать данные для rpart

Просто хотел объединить имена (log_data), log_data - это список из 60 векторов различных векторов, поэтому я просто хочу, чтобы их имена столбцов были в формате, чтобы я мог поместить их в формулу rpart в r ... .. как rpart(A ~ B + C + D + E ,log_data), поэтому здесь я просто хочу извлечь formula = "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 только потому, что слишком длинное имя столбца или может быть п = 60

Могу ли я прикрепить любые названия колонок colnames (log_data) < - c (?), что я должен поставить на «?», Так что будет легко рисовать его для n = 60.

+0

'о (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 <-paste (a [1], "~", sep = "") rpart_formula <- as.formula (вставка (c, paste (a [2:60], collapse = "+"), sep = "")) – Aashu

+0

трудно сказать, что происходит не так, без воспроизводимого примера. Не подходит ли ваше альтернативное решение или это работает? –

+0

nope это не могло быть просто из-за ошибки из-за привязки массива и неспособности изменить имена столбцов, как и в целочисленном, а также – Aashu