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

如何按行列合并DataFrame?实现多国经济对角矩阵自动化合并

自动化合并对角块DataFrame解决方案

方法1:Base R 循环实现(无需额外包)

# 假设你的数据列表名为IO,包含25个214×214的方阵DataFrame
# 获取单个方阵的维度(因是方阵,取行数即可)
block_size <- nrow(IO[[1]])
num_blocks <- length(IO)
total_size <- block_size * num_blocks

# 初始化全NA的大DataFrame
big_df <- as.data.frame(matrix(NA, nrow = total_size, ncol = total_size))

# 批量生成并设置行列名
all_colnames <- unlist(lapply(IO, colnames))
colnames(big_df) <- all_colnames
rownames(big_df) <- all_colnames

# 循环填充每个对角区域
for (i in 1:num_blocks) {
  start <- (i - 1) * block_size + 1
  end <- i * block_size
  big_df[start:end, start:end] <- IO[[i]]
}

方法2:用Matrix包快速生成(代码更简洁)

library(Matrix)

# 把列表里的DataFrame转成矩阵,直接生成对角块矩阵
big_block_matrix <- block.diag(lapply(IO, as.matrix))
# 转成DataFrame并设置行列名
big_df <- as.data.frame(as.matrix(big_block_matrix))
all_colnames <- unlist(lapply(IO, colnames))
colnames(big_df) <- all_colnames
rownames(big_df) <- all_colnames

说明

  • 两种方法都能自动适配你的25个214×214方阵场景,不需要手动计算维度或指定位置。
  • 行列名会自动从每个小DataFrame提取并按顺序拼接,和对角块位置完全对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:57:49