首页 > 解决方案 > 循环遍历全局宏

问题描述

我是 Stata 的新手,我有一组变量,如下所示:

global var1  " age sex"

global var2  "area"

global var3  "race"

我想遍历 3 个变量并应用一个函数,例如:

foreach a in $var1 $var2  $var3   { some function given `a'}

但问题是这个函数是通过 varlist 的内容一个一个地应用的,一个 forvar1取第一个值age,然后sex当我想要它取值时age sex。你对这个问题有什么见解吗?

标签: stata

解决方案


有各种解决方法。一个简单的可以在

global var1 "age sex"

global var2 "area"

global var3 "race"

forval j = 1/3 { 
    di "${var`j'}"
}

您的问题引发了各种小问题:

  1. 虽然类似的项目在其他语言中被称为变量,但全局宏在 Stata 中不被视为变量,因为变量(仅)是变量,即数据集中的列。

  2. 同样,您所说的函数更有可能是 Stata 中的命令。命令和函数在 Stata 中不是同义词。

  3. 为您展示的目的使用本地宏要好得多。这是一般良好的编程风格。


推荐阅读