You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言sample函数拆分数据框:抽样与未抽样子集提取报错解决

问题解决:从数据框拆分抽样/未抽样子集的错误修复

问题根源

你当前的代码里,sample <- DATA[sample(1:nrow(DATA), ...),]这一步把抽样得到的数据框赋值给了sample变量,但后续试图用这个数据框作为行下标提取子集——R的行下标需要向量(行号或逻辑值),而非列表/数据框类型,因此触发了invalid subscript type 'list'错误。

正确实现步骤

核心逻辑是:先单独生成抽样的行索引向量,再用这个向量拆分原数据框。

  1. 生成模拟数据(这部分代码无需修改)
DATA <- data.frame(x=c(3, 5, 6, 6, 8, 12, 14),
                   y=c(12, 6, 4, 23, 25, 8, 9),
                   z=c(2, 7, 8, 8, 15, 17, 29))
  1. 生成抽样行索引(避免用sample做变量名,防止和内置函数重名)
# 生成要抽取的行号向量
sample_rows <- sample(1:nrow(DATA), floor(nrow(DATA)*0.7), replace = FALSE)
  1. 拆分训练集与测试集
# 抽样得到的子集(训练集)
training <- DATA[sample_rows, ]
# 未抽样的子集(测试集):用负号排除已抽样的行
testing <- DATA[-sample_rows, ]

补充说明

你参考的资料里,sample变量指的是行索引向量,但你误将其赋值为抽样后的子数据框,导致下标类型不匹配。另外,尽量避免用R内置函数名(如sample)作为自定义变量名,防止后续代码出现混淆或意外错误。

内容的提问来源于stack exchange,提问作者JoF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:57:51