如何简化两个变量列表的循环

How to simplify a loop over two variable lists

我有一个数据集,其中包含 3 只股票的三个时间序列观测值,以及每只股票的变量 r 和 v。我的数据以广泛的形式组织,即我有 r1r2r3v1v2v3,以及时间索引t。我需要使用循环(不是 statsby/其他长格式解决方案)来 运行 三个回归,即 r1 v1r2 v2r3 v3。到目前为止,我只写了以下内容:

tsset t
foreach r of varlist r1 r2 r3 {
  foreach v of varlist v1 v2 v3 {
    reg `r' `v'
  }
}

这显然 运行s 9 个回归,其中只需要 3 个。如何将此循环简化为仅 运行 我需要的回归?

这是一个循环,所以不要编程两个。

forval j = 1/3 {
    reg r`j' v`j' 
}

诀窍是看看有什么不同:它是后缀 1 2 3。每次循环都需要 rv,因此可以作为常量连接到代码中。