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

R语言tidyverse按每n列拆分数据框为列表批量导出CSV

基于tidyverse的固定列数拆分数据框+批量导出方案

核心实现逻辑:按设定的单组列数(本例为4列)生成列选择索引,批量提取子数据框存入列表,再遍历列表完成CSV批量导出,自动兼容最后一组列数不足4列的场景。


完整实现代码

  • 第一步:加载tidyverse套件
library(tidyverse)
  • 第二步:读入/构造目标数据
# 示例数据(实际使用时替换为read_excel/read_csv读入的数据即可)
df <- structure(list(A = c(79L, 42L, 74L, 49L, 82L, 22L, 88L, 13L, 
54L, 68L), B = c(41L, 22L, 1L, 40L, 96L, 48L, 40L, 56L, 19L, 
84L), C = c(20L, 10L, 1L, 27L, 34L, 27L, 35L, 3L, 78L, 36L), 
    D = c(40L, 92L, 76L, 81L, 73L, 30L, 10L, 57L, 19L, 18L), 
    G = c(50L, 74L, 37L, 60L, 23L, 42L, 22L, 94L, 28L, 68L), 
    H = c(54L, 62L, 92L, 61L, 91L, 76L, 51L, 60L, 89L, 36L), 
    J = c(64L, 59L, 1L, 99L, 36L, 26L, 15L, 16L, 83L, 39L), K = c(29L, 
    30L, 80L, 33L, 44L, 28L, 9L, 53L, 11L, 68L), L = c(42L, 29L, 
    10L, 75L, 24L, 68L, 56L, 77L, 23L, 92L), M = c(56L, 27L, 
    61L, 40L, 76L, 50L, 31L, 15L, 72L, 40L), N = c(45L, 33L, 
    37L, 32L, 5L, 20L, 45L, 38L, 25L, 32L), Z = c(52L, 88L, 74L, 
    91L, 86L, 43L, 4L, 6L, 61L, 69L), X = c(58L, 92L, 19L, 99L, 
    9L, 58L, 53L, 49L, 48L, 32L), Y = c(75L, 13L, 63L, 37L, 30L, 
    98L, 98L, 94L, 38L, 25L), S = c(99L, 64L, 27L, 30L, 100L, 
    40L, 76L, 2L, 10L, 57L), P = c(16L, 76L, 69L, 64L, 68L, 34L, 
    96L, 22L, 48L, 1L)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -10L))
  • 第三步:按每4列拆分为子数据框列表
# 配置单组包含的列数,可按需修改
group_col_num <- 4

# 执行拆分
split_result <- seq(1, ncol(df), by = group_col_num) %>% 
  map(~ select(df, all_of(.x : min(.x + group_col_num - 1, ncol(df)))))

拆分结果和预期完全匹配:

  • 第1个元素为A、B、C、D四列

  • 第2个元素为G、H、J、K四列

  • 第3个元素为L、M、N、Z四列

  • 第4个元素为X、Y、S、P四列
    如果总列数不是4的整数倍,最后一组会自动保留剩余所有列,不会出现索引越界报错。

  • 第四步:批量导出为CSV文件

# 遍历列表导出,文件默认命名为 数据分组_1.csv、数据分组_2.csv...
split_result %>% 
  iwalk(~ write_csv(.x, file = paste0("数据分组_", .y, ".csv")))

如果需要自定义文件命名规则,直接修改paste0内的文件名生成逻辑即可,比如用每组第一列的列名作为文件名。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:51:20