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

如何同步随机打乱data.frame的两列且保持列对应关系?

解决方案

首先,我们可以通过以下步骤实现需求:

  • 每次打乱时,保持b和d列的行对应关系,即它们的行索引同步随机重排
  • 将打乱后的b、d列与原始的a、c列组合,生成新的数据框
  • 重复上述过程1000次,得到1000个数据框

代码实现

# 原始数据框
set.seed(123) # 设置随机种子保证结果可复现(可选)
df <- data.frame(a=rnorm(10, 0,1), b=rnorm(10,1,2), c=rnorm(10, 2, 1),
                 d=rnorm(10, 1,2))

# 定义打乱函数:保持b和d的对应关系
shuffle_bd <- function(df) {
  # 生成随机行索引
  shuffled_idx <- sample(nrow(df))
  # 提取打乱后的b和d,保留a和c的原始顺序
  new_df <- df
  new_df[, c("b", "d")] <- df[shuffled_idx, c("b", "d")]
  return(new_df)
}

# 生成1000个打乱后的数据框,存储在列表中
shuffled_dfs <- replicate(1000, shuffle_bd(df), simplify = FALSE)

代码说明

  • set.seed(123):固定随机种子,确保每次运行代码得到的打乱结果一致,不需要可删除
  • shuffle_bd函数:通过sample(nrow(df))生成随机行索引,用该索引重排b和d列,同时保留a和c列的原始顺序
  • replicate(1000, ...):重复执行打乱函数1000次,simplify = FALSE确保结果是包含1000个数据框的列表

你可以通过shuffled_dfs[[1]]、shuffled_dfs[[2]]等方式访问每个打乱后的数据框。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:15:33