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

如何在R中对超长dataframe按每两行一组重复交换行位置

实现方案

你可以直接通过构造调整后的行索引完成重排,无需编写复杂自定义函数,以下是两种常用实现方式:

1. 基础R实现(无需加载额外包)

该方案兼容性最强、运行效率高,适配任意长度的dataframe:

# 替换为你自己的dataframe名称
df <- your_data_frame
n <- nrow(df)
even_idx <- seq(2, n, 2)
odd_idx <- seq(1, n, 2)
# 构造每两行互换的索引,总行数为奇数时自动保留最后一行位置不变
new_idx <- c(rbind(even_idx, odd_idx), if(length(odd_idx) > length(even_idx)) tail(odd_idx, 1) else NULL)
# 重排生成新dataframe
df_adjusted <- df[new_idx, ]

运行上述代码后输出的结果和你要求的目标结构完全匹配。

2. dplyr 实现(适配tidyverse生态)

如果你习惯使用tidyverse系列工具,可以用分组排序的方式实现:

library(dplyr)

df_adjusted <- df %>%
  # 每两行划分为一组
  mutate(group = (row_number() - 1) %/% 2,
         row_rank = row_number() %% 2) %>%
  # 组内倒序排列实现行交换
  arrange(group, desc(row_rank)) %>%
  # 清除辅助列
  select(-group, -row_rank)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:48:02