在R

2014-11-25 57 views
-1

中獲取錯誤「可變長度不同(找到'columns_features')」我將rpart函數應用於一個名爲train的數據框,其中包含所有整數值。 功能太多,所以我創建了一個公式。在R

columns_features <- (paste(colnames(train)[31:50], collapse = "+")) 
formulas <- as.formula(train$left_eye_center_x ~ columns_features) 
tree_pred <- rpart(formulas , data = train) 

在這裏,我得到錯誤信息

Error in model.frame.default(formula = formulas, data = train, na.action = function (x) : variable lengths differ (found for 'columns_features') 

當我檢查公式有

train$left_eye_center_x ~ columns_features 

和column_features有

[1] "l_1+ l_2+ l_3+ l_4+ l_5+ l_6+ l_7+ l_8+ l_9+ l_10+ l_11+ l_12+ l_13+ l_14+ l_15+ l_16+ l_17+ l_18+ l_19+ l_20" 

對於檢查的目的時,我手動輸入該柱ñ名稱在這裏,它的作品

formulas <- as.formula(train$left_eye_center_x ~ l_1+ l_2+ l_3+ l_4+ l_5+ l_6+ l_7+ l_8+ l_9+ l_10+ l_11+ l_12+ l_13+ l_14+ l_15+ l_16+ l_17+ l_18+ l_19+ l_20 ) 
tree_pred <- rpart(formulas , data = train) 

是雙引號創建錯誤?有什麼可以解決這個問題的?我有很多功能,所以我無法手動輸入每個功能。

回答

1

從as.formula例子:

## Create a formula for a model with a large number of variables: 
xnam <- paste0("x", 1:25) 
(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+")))) 

這意味着在你的情況下,下面應該工作:

formulas <- as.formula(paste("train$left_eye_center_x ~", paste(colnames(train)[31:50], collapse = "+"))) 

一個變通辦法,而不是用的方法是( NB:我從來沒有使用rpart,但我相信這是有效的):

formulas <- as.formula(train$left_eye_center_x ~ .) 
tree_pred <- rpart(formulas , data = train[,31:50]) 

如果rpart不喜歡get婷索引的數據,你可以定義一個新的數據框:

train4rpart <- train[,31:50] 
tree_pred <- rpart(formulas , data = train4rpart) 

事實上,通讀rpart包,您可以跳過整個公式的事情:

tree_pred <- rpart(train$left_eye_center_x ~ . , data = train[,31:50]) 

OR

tree_pred <- rpart(train$left_eye_center_x ~ . , data = train4rpart) 
+1

並非所有的這些幫助。然而,'formula < - as.formula(paste(「train $ left_eye_center_x〜」,paste(colnames(train)[31:50],collapse =「+」)))'是有幫助的 – 2014-12-02 05:02:38