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

如何在R中高效重复行绑定矩阵(避免循环)

矩阵按行重复拼接的简洁实现

给定R矩阵:

(x <- matrix(1:6, ncol = 3, byrow = TRUE))
#      [,1] [,2] [,3]
# [1,]    1    2    3
# [2,]    4    5    6

需要实现类似rbind(x, x)的效果,且支持不定次数重复、避免循环,以下是几种简洁方案:

方案1:结合replicate与do.call

利用replicate生成包含k个x的列表,再通过do.call批量调用rbind合并:

k <- 2
do.call(rbind, replicate(k, x, simplify = FALSE))
#      [,1] [,2] [,3]
# [1,]    1    2    3
# [2,]    4    5    6
# [3,]    1    2    3
# [4,]    4    5    6

simplify=FALSE确保replicate返回列表而非数组,避免后续转换时的元素顺序混乱。

方案2:直接用matrix重构

利用matrix的填充特性,指定目标行数为原行数的k倍,byrow=TRUE会按行重复原矩阵的元素:

k <- 2
matrix(x, nrow = nrow(x)*k, byrow = TRUE)
#      [,1] [,2] [,3]
# [1,]    1    2    3
# [2,]    4    5    6
# [3,]    1    2    3
# [4,]    4    5    6

这是最简洁的实现方式,无需额外转置或列表操作。

方案3:重复行索引提取

通过重复原矩阵的行索引,直接提取对应行:

k <- 2
x[rep(seq_len(nrow(x)), k), ]
#      [,1] [,2] [,3]
# [1,]    1    2    3
# [2,]    4    5    6
# [3,]    1    2    3
# [4,]    4    5    6

rep(seq_len(nrow(x)), k)生成重复k次的行索引向量,索引提取后自动拼接成目标矩阵。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:17:03