eval(expr,envir,enclos)中的错误:object' Param1'未找到

时间:2015-03-13 22:02:37

标签: r

我从csv读取train_data,然后按如下方式训练GBM模型:

train_rows <- sample(nrow(train_data), round(nrow(train_data) * 0.5))
traindf <- data[train_rows, ]
testdf <- data[-train_rows, ]

gbm_formula <- as.formula("traindf$myTarget ~ Param1 + Param2 + Param3")
gbm_model <- gbm(gbm_formula, 
                 traindf, 
                 distribution = "bernoulli", 
                 n.trees = 200, 
                 bag.fraction = 0.75, 
                 cv.folds = 5, 
                 interaction.depth = 3)

然后我出现以下错误:

Error in eval(expr, envir, enclos) : object 'Param1' not found

我知道的唯一解决方案是指定gbm_formula,如下所示:

gbm_formula <- as.formula("traindf$myTarget ~ traindf$Param1 + traindf$Param2 + traindf$Param3")

还有其他解决办法吗?

2 个答案:

答案 0 :(得分:1)

在致电traindf时,将data=traindf更改为gbm。您需要命名参数,因为函数中的第二个位置参数实际上是distribution

您也可以将公式更改为as.formula("myTarget ~ Param1 + Param2 + Param3")(虽然这不是错误的原因)。

答案 1 :(得分:1)

这可能有效:

gbm_formula <- as.formula(paste0("myTarget~",paste0("Param",1:3,collapse="+")))
>gbm_formula
myTarget ~ Param1 + Param2 + Param3