R中caret::bagFDA()调用caret::varImp()报错:找不到函数'.'
解决caret::varImp()在bagFDA模型上的报错问题
问题原因
报错Error in .(var) : could not find function "."是因为caret针对bagFDA模型实现的变量重要性计算逻辑依赖于plyr包的.函数,但你的环境中要么未加载plyr,要么加载的tidyverse(含dplyr)覆盖了plyr的.函数,导致R无法找到正确的函数版本。
解决方案
直接加载plyr包即可解决该问题,修正后的代码如下:
library(tidyverse) library(caret) library(mda) library(earth) library(plyr) # 新增加载plyr包 # 获取数据 data(iris) # 训练bagFDA模型 bagFDA_multivariate <- caret::bagFDA(as.factor(Species) ~ ., data = iris) # 计算变量重要性 caret::varImp(bagFDA_multivariate)
运行结果
执行后会输出各变量的重要性评分:
bagFDA variable importance Overall Petal.Length 100.00 Petal.Width 99.74 Sepal.Length 14.63 Sepal.Width 5.34
内容的提问来源于stack exchange,提问作者Rodrigo Nehara
相关产品推荐
相关产品推荐

