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

在R中按3元素块将向量重组成固定行数矩阵的方法

R语言:将数值向量按3列块转换为固定行数矩阵

核心思路

把向量分割成多个长度为目标行数×3的子块,每个子块按列填充成目标行数×3的矩阵,最后将所有子块矩阵横向拼接,就能得到符合要求的格式。

通用实现代码

# 输入参数:替换为你的向量和目标行数
vec <- 1:18  
target_rows <- 3  

# 计算每个3列块的元素数量
block_size <- target_rows * 3

# 补全向量到块大小的整数倍(可选,避免长度不足报错)
pad_length <- ((length(vec) + block_size - 1) %/% block_size) * block_size - length(vec)
vec_padded <- c(vec, rep(NA, pad_length))

# 分割向量为多个块
blocks <- split(vec_padded, ceiling(seq_along(vec_padded) / block_size))

# 转换每个块为矩阵并拼接
result_matrix <- do.call(cbind, lapply(blocks, function(x) matrix(x, nrow = target_rows, ncol = 3)))

# 查看结果
print(result_matrix)

示例验证

1. 3行示例(向量1:18)

设置target_rows = 3,输出:

[,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3   10   11   12
[2,]    4    5    6   13   14   15
[3,]    7    8    9   16   17   18

2. 4行示例(向量1:24)

设置target_rows = 4,输出:

[,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3   13   14   15
[2,]    4    5    6   16   17   18
[3,]    7    8    9   19   20   21
[4,]   10   11   12   22   23   24

3. 多组3行示例(向量1:36)

设置target_rows = 3,输出:

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]    1    2    3   10   11   12   19   20   21    28    29    30
[2,]    4    5    6   13   14   15   22   23   24    31    32    33
[3,]    7    8    9   16   17   18   25   26   27    34    35    36

关键代码说明

  • split(..., ceiling(seq_along(vec)/block_size)):按指定块大小分割向量,确保每个块包含目标行数×3个元素
  • matrix(x, nrow = target_rows, ncol = 3):默认按列填充矩阵,完全匹配示例中的元素排列逻辑
  • do.call(cbind, ...):将所有子块矩阵横向拼接,形成最终的宽矩阵

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:11:18