2016-09-08 5 views
0

私は1つのデータセットでランダムフォレストをテストしています。 1つのデータフレームですべてのRFの可変重要度を出力したいと思います。エラーがスローされます多数のフォレストの集約(RF)変数重要度

forests <- grep("rf", ls(), value=T) 
importances <- do.call(cbind, lapply(forests, importance)) 

:ような何か

Error in UseMethod("importance") : no applicable method for 'importance' applied to an object of class "character" 

私はリストにforestsを変換しようとしたが、それはどちらかの助けにはなりませんでした。

例:

rf10 <- randomForest(mpg ~., mtcars, ntree=10) 
rf100 <- randomForest(mpg ~., mtcars, ntree=100) 
cbind(importance(rf10), importance(rf100)) 

答えて

1

あなたが代わりに

do.call(cbind, lapply(forests, function(x) importance(get(x)))) 

を行う必要がありますはgrepからの戻り値は、変数名、変数ではない自分自身のリストでした。 importance(x)を実行したときは、たとえばimportance("rf10")でした。オブジェクトはパラメータとして使用する必要があり、オブジェクトの名前では使用しないでください。 get(x)は参照オブジェクトを返します。

+0

ありがとう、@ jav。それは恥ずかしいほど簡単でした。 – DGenchev