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

如何将列表中存储的多个data.frame按对应参数自动切分为等份

R多data.frame批量按指定份数切分实现方案

原有代码问题

  1. seq_along(n[[1]])获取的是data.frame的列索引而非行索引,按行切分需要使用seq(nrow(df))生成行号序列
  2. 直接传入整个parts向量计算,无法和每个data.frame的切分份数一一对应

实现代码

使用mapply实现列表元素和切分份数的一一对应批量处理,可兼容最多200个甚至更多data.frame的场景:

# 你的原始数据生成代码
tzu <- c(1:110)
tzu1 <- c(1:110)
df1 <- data.frame(tzu, tzu1)
atu <- c(1:120)
atu1 <- c(1:120)
df2 <- data.frame(atu, atu1)
n <- list(df1, df2)

# 切分份数向量,长度和n的长度保持一致即可
parts <- c(11,12)

# 核心批量切分代码
split_result <- mapply(function(current_df, split_count) {
  row_seq <- seq(nrow(current_df))
  split(current_df, ceiling(row_seq / split_count))
}, current_df = n, split_count = parts, SIMPLIFY = FALSE)

结果使用说明

  • split_result是和n长度相同的列表,split_result[[i]]对应第i个data.frame切分后的子列表
  • 取第一个data.frame的第3份:split_result[[1]][[3]]
  • 取第二个data.frame的第10份:split_result[[2]][[10]]

效果验证

# 验证第一个df切分结果:共11份,每份10行
length(split_result[[1]])
# 输出 11
nrow(split_result[[1]][[1]])
# 输出 10

# 验证第二个df切分结果:共12份,每份10行
length(split_result[[2]])
# 输出 12
nrow(split_result[[2]][[1]])
# 输出 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:51:01