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

R语言实现24×24矩阵/数据框拆分为含所有行列组合的5×5子集

R语言实现24×24数据框拆分所有5×5滑动子集

需求本质是步长为1的滑动窗口取数,所有可能的行/列组合即窗口每次移动1位,覆盖所有合法的5行、5列连续区间:

  • 24行的场景下,合法的行起始索引范围是 1:(24-5+1) 即1到20,共20种行选择
  • 同理列起始索引范围也是1到20,共20种列选择
  • 最终得到20×20=400个5×5的子集,全部存在列表中方便后续调用
完整代码示例
# 1. 先构造一个24×24的示例数据框,你可以替换成自己的实际数据
df <- as.data.frame(matrix(rnorm(24*24), nrow = 24, ncol = 24))

# 2. 生成所有合法的行、列起始索引组合
window_size <- 5
max_start <- nrow(df) - window_size + 1
start_combinations <- expand.grid(
  row_start = 1:max_start,
  col_start = 1:max_start
)

# 3. 遍历所有组合提取5×5子集,结果存在列表中
subset_list <- lapply(1:nrow(start_combinations), function(i) {
  r_start <- start_combinations$row_start[i]
  c_start <- start_combinations$col_start[i]
  # 提取连续5行、5列的子集
  df[r_start:(r_start + window_size - 1), c_start:(c_start + window_size - 1)]
})
结果使用说明
  • 所有5×5子集都保存在subset_list列表中,总长度为400
  • 访问第n个子集直接调用subset_list[[n]]即可
  • 如果需要给子集做标记,可以给列表命名,添加对应行起始、列起始的标识:
names(subset_list) <- paste0("行起始", start_combinations$row_start, "_列起始", start_combinations$col_start)
  • 如果你需要非连续的5×5组合,只需要修改start_combinations的生成逻辑即可,上述代码默认是连续滑动窗口的所有组合,符合覆盖所有可能的行、列连续组合的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:06:01