0

以下のおもちゃの例では、変数名cylを 1_cyl に変換しました。実際のデータには、数字で始まる変数がいくつかあるため、これを行っています。その式を使用して randomForest を適用していますが、以下に示すエラーが発生しています。別の関数が同じ式で完璧に機能することがわかります。

どうすればこの問題を解決できますか?

data(mtcars)
colnames(mtcars)[2] = '1_cyl'
colnames(mtcars)
#[1] "mpg"   "1_cyl" "disp"  "hp"    "drat"  "wt"    "qsec"  "vs"    "am"    "gear"  "carb" ]
(fmla <- as.formula(paste("mpg ~ `1_cyl`+hp ")) )
randomForest(fmla,  dat=mtcars,importance=T,na.action=na.exclude)

#> randomForest(fmla,  dat=mtcars,importance=T,na.action=na.exclude)
#Error in eval(expr, envir, enclos) : object '1_cyl' not found

#Another functions works!!!
rpart(fmla, dat=mtcars)
glm (fmla, dat=mtcars)
4

1 に答える 1

2

randomForest.formula何らかの理由で への呼び出しが内部にありreformulate、その関数は標準外の名前を好まないようです。(これも2回呼び出していmodel.frameます。)

randomForestこれは、数式を使用せずに呼び出すことで回避できますが、モデル マトリックスと応答変数を使用します。数式を使用すると、とにかくこれが起こります。randomForest.formulaは、モデル マトリックスを作成する便利なラッパーです。

randomForest(mtcars[, -1], mtcars[, 1])
于 2013-07-25T14:21:54.330 に答える