R caret包rfe()运行提示$ operator is invalid for atomic vectors错误如何解决
报错根因
代码的核心问题出在rfeControl的functions参数传值错误:caret的rfeControl要求functions参数传入的是函数列表对象,你给的是字符串'rfFuncs',字符串属于原子向量,后续rfe执行时尝试用$提取该参数下的对应方法就会触发$ operator is invalid for atomic vectors报错。
修复方案
- 先确认已加载必要依赖包:
library(caret) library(randomForest)
- 修改
rfeControl配置,去掉rfFuncs两端的引号,直接传入函数对象:
set.seed(150) ctrl_rf <- rfeControl(functions = rfFuncs, method = "cv", number = 10, rerank = TRUE )
- 可选稳定性优化:如果你的
fTR是tibble类型,原有提取标签的写法可能返回单列数据框而非因子向量,建议调整为以下写法确保y格式正确:
y <- fTR$defective # 或者保留索引写法添加drop参数 y <- fTR[,'defective', drop = TRUE]
其余代码不需要修改,调整后重新运行即可正常执行。
内容的提问来源于stack exchange,提问作者jsor
相关产品推荐
相关产品推荐

