我一直在一个数据集上测试随机森林。我想在一个数据帧中输出所有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))
答案 0 :(得分:1)
你应该改为
do.call(cbind, lapply(forests, function(x) importance(get(x))))
grep的返回值是变量名列表,而不是变量本身。当您执行importance(x)
时,例如正在执行importance("rf10")
。您应该使用对象作为参数,而不是对象的名称。 get(x)
为您返回引用对象。