R语言随机森林预测:概率转类别未生成预期因子列表问题
问题分析与解决
你的问题出在最后一段循环代码里,存在两个关键错误:
- 循环变量误用了未定义的
training_num,应改为之前设定的sample_num - 每次循环都重新初始化
predClass_control为新列表,随后直接用单个因子覆盖整个变量,导致最终仅保留最后一次循环的结果,而非存储所有模型的分类结果
修正后的代码
# 初始化存储分类结果的列表 predClass_control <- vector("list", sample_num) names(predClass_control) <- sprintf("class_pred_model%s", seq(1:sample_num)) # 循环生成每个模型的二分类结果 for(s in 1:sample_num){ # 将概率转换为二分类因子,并存入列表对应位置 predClass_control[[s]] <- as.factor(ifelse(predictControl[[s]] > 0.5, 1, 0)) }
关键修正说明
- 将列表初始化操作放在循环外部,避免每次循环重置列表结构
- 循环内通过
predClass_control[[s]]将单个模型的分类结果存入列表的对应位置 - 统一使用
sample_num作为循环范围,与前面的模型数量保持一致
修正后,predClass_control会成为一个长度为10的列表,每个元素对应一个模型生成的9670个元素的因子向量。
内容的提问来源于stack exchange,提问作者Asal Khoshravan Azar
相关产品推荐
相关产品推荐

