R运行initial_split报错Can't select within an unnamed vector如何解决
问题解决方法
1 核心报错诱因
你调用initial_split()时传入了cog_gpa$GPA这个单个数值向量,但rsample包的initial_split()第一个参数要求传入完整的data.frame/tibble对象,传入无名向量会触发tidyselect的变量选择逻辑报错,这是最直接的错误来源。
2 带标签数值类型转换(可选但推荐)
你提到的预测变量为dbl+lbl类型是haven包读取带标签数据集的标准格式,为了避免后续建模出现兼容问题,建议先统一转为纯numeric类型,转换代码如下:
library(dplyr) library(haven) cog_gpa_clean <- cog_gpa %>% # 匹配所有带标签的列,转为纯数值 mutate(across(where(is.labelled), as.numeric))
3 修正后的数据集拆分代码
library(rsample) # 传入完整清理后的数据集进行拆分 cog_gpa_split <- initial_split(cog_gpa_clean, prop = 0.7) # 提取训练集、测试集 train_data <- training(cog_gpa_split) test_data <- testing(cog_gpa_split)
后续随机森林变量重要性计算示例(可选)
如果你使用tidymodels框架计算变量重要性,可以参考如下代码:
library(parsnip) library(vip) # 定义随机森林回归模型 rf_model <- rand_forest(mode = "regression") %>% set_engine("ranger", importance = "permutation") # 拟合模型 rf_fit <- rf_model %>% fit(GPA ~ ., data = train_data) # 输出变量重要性可视化结果 vip(rf_fit)
内容的提问来源于stack exchange,提问作者Tannya Kumar
相关产品推荐
相关产品推荐

