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

R语言随机采样时保留原始行索引的实现方法问询

核心实现思路

你之前的实现是直接对列值采样,天然丢失了行关联信息,只要将采样对象改为原始行索引,再通过索引提取对应数据,全程不需要回溯匹配,时间复杂度为O(1)级别,完全适配超大规模数据集。

基础R实现方案

# 无放回采样3个原始行索引
sample_idx <- sample(nrow(df), size = 3, replace = FALSE)
# 提取对应行,结果的行名即为原始行号
sampled_df <- df[sample_idx, , drop = FALSE]

# 单独提取原始索引和对应列值的示例
original_row_index <- as.integer(rownames(sampled_df))
sampled_x_value <- sampled_df$x

Tidyverse生态实现方案

如果你习惯用dplyr处理数据,可以显式生成原始行号列后采样,逻辑更清晰:

library(dplyr)

sampled_df <- df %>%
  mutate(original_row_index = row_number()) %>% # 新增列存储原始行号
  slice_sample(n = 3, replace = FALSE) # 无放回随机采样3行

方案优势

  • 无额外的匹配、检索操作,性能不会随数据集体量增大衰减
  • 采样结果同时包含原始行索引和对应全量行数据,不需要二次处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:24:01