许多森林的聚合(RF)变量重要性

时间:2016-09-08 14:49:11

标签: r random-forest cbind

我一直在一个数据集上测试随机森林。我想在一个数据帧中输出所有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 个答案:

答案 0 :(得分:1)

你应该改为

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

grep的返回值是变量名列表,而不是变量本身。当您执行importance(x)时,例如正在执行importance("rf10")。您应该使用对象作为参数,而不是对象的名称。 get(x)为您返回引用对象。