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

如何在Stata Mata中将向量转换为矩阵?附R语言等效示例

在Stata Mata中实现向量按行分组转矩阵

你需要将长度为12的向量切分为每组3个元素的子向量,再通过行绑定生成矩阵,对应R语言中matrix(tmpv, ncol=3, byrow=TRUE)的功能,在Stata Mata里有两种简洁的实现方式:

方法一:利用矩阵转置

先通过matrix()函数按列优先生成矩阵,再转置得到按行填充的结果:

// 生成目标列向量
tmpv = (1..12)'
// 转换为3列矩阵后转置,实现按行填充
tmpm = matrix(tmpv, 3, .)'

// 查看结果
tmpv
tmpm

运行后输出:

tmpv:
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        11
        12

tmpm:
     1   2   3
    4   5   6
    7   8   9
   10  11  12

方法二:使用reshape函数

先将列向量转为行向量,再用reshape()按行优先拆分指定行列数的矩阵:

// 生成目标列向量
tmpv = (1..12)'
// 转成行向量后拆分为4行3列的矩阵
tmpm = reshape(tmpv', 4, 3)

// 查看结果
tmpv
tmpm

输出结果和方法一完全一致。

如果需要更通用的写法(比如不确定向量长度,只要是列数的整数倍),可以通过计算行数来实现:

cols = 3
tmpv = (1..12)'
rows = length(tmpv) / cols
tmpm = reshape(tmpv', rows, cols)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:47:28