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

R语言iris数据集简单随机抽样行号不一致问题问询

关于iris数据集抽样后行号不一致的原因及解决办法

原因解析

你遇到的问题核心是行名(row names)和行索引(位置序号)的混淆:

  • 当你用iris[order(iris$Species, iris$Sepal.Length), ]生成iris.new时,R默认会保留原iris数据集的行名,这些行名是原数据里的原始编号(比如1到150)。
  • 而sample(1:nrow(iris.new), 20)抽取的是iris.new的行位置索引(也就是新数据框里第1行、第2行...的序号),不是原数据的行名。

所以当你用抽取的索引子集化iris.new后,看到的行号其实是原数据集的行名,和你sample得到的位置序号自然对不上,这只是视觉上的“不一致”,实际抽样逻辑是正确的。

解决办法

如果想要让抽样得到的序号和子集化后的行号完全对应,只需要在生成iris.new后重置行名即可:

# 排序并生成新数据框
iris.new <- iris[order(iris$Species, iris$Sepal.Length), ]
# 重置行名为连续的1到150
rownames(iris.new) <- NULL

# 后续抽样步骤不变
set.seed(60900921)
iris.sample <- sample(1:nrow(iris.new), 20)
iris.sample.df <- iris.new[iris.sample, ]

此时iris.sample.df的行名就会和你抽取的iris.sample数字完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:13:16