R语言拆分训练测试集遇对象未找到错误求助
解决R语言拆分数据集时的"object not found"报错
嘿,我来帮你搞定这个问题!你反复遇到的Error: object 'wisc_bc_data_test' not found报错,根源很简单——你在创建训练集和测试集的时候,错误地引用了还未定义的对象。
问题出在哪?
看你这段代码:
wisc_bc_data_train <- wisc_bc_data_train[train_ind, ] wisc_bc_data_test <- wisc_bc_data_test[-train_ind, ]
你试图从wisc_bc_data_train和wisc_bc_data_test里提取行,但这两个对象在你写这行代码之前根本不存在!R自然找不到它们,所以报错。正确的做法应该是从你已有的原始数据集wisc_bc_data中提取数据来创建训练集和测试集。
修正后的完整代码
你前面的拆分比例计算和随机种子设置都是对的,只需要修改最后两行:
# 计算训练集大小(70%的数据) data_split <- floor(0.7 * nrow(wisc_bc_data)) # 设置随机种子保证结果可复现 set.seed(123) # 随机抽取训练集的行索引 train_ind <- sample(seq_len(nrow(wisc_bc_data)), size = data_split) # 从原始数据集提取训练集和测试集(关键修正!) wisc_bc_data_train <- wisc_bc_data[train_ind, ] wisc_bc_data_test <- wisc_bc_data[-train_ind, ]
额外小提示
如果你以后经常需要拆分数据集,可以试试caret包的createDataPartition函数,它会更智能地保持分类变量的分布(比如这个乳腺癌数据集的诊断标签):
# 先安装并加载caret包(如果没装过的话) # install.packages("caret") library(caret) set.seed(123) # 假设诊断列是diagnosis,按这个列分层抽样 train_ind <- createDataPartition(wisc_bc_data$diagnosis, p = 0.7, list = FALSE) wisc_bc_data_train <- wisc_bc_data[train_ind, ] wisc_bc_data_test <- wisc_bc_data[-train_ind, ]
内容的提问来源于stack exchange,提问作者John Darroch




