如何在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
相关产品推荐
相关产品推荐

