遍历全局宏
Loop through global macros
我是 Stata 的新手,我有一组变量,如:
global var1 " age sex"
global var2 "area"
global var3 "race"
我想遍历 3 个变量并应用一个函数,例如:
foreach a in $var1 $var2 $var3 { some function given `a'}
但问题是这个函数是通过 varlist 的内容一个一个地应用的,并且一个 for var1
取第一个值 age
然后 sex
当我想要它的时候采取 age sex
。您对这个问题有什么见解吗?
对此有多种解决方法。可以在
中看到一个简单的
global var1 "age sex"
global var2 "area"
global var3 "race"
forval j = 1/3 {
di "${var`j'}"
}
您的问题引发了各种小问题:
虽然类似的项目在其他语言中会被称为变量,但全局宏在 Stata 中不被视为变量,因为变量(仅)是变量,意思是数据集中的列。
同样,你所说的函数在Stata中更可能是命令。命令和函数在 Stata 中不是同义词。
为了你展示的目的,使用局部宏会好很多。这是一般好的编程风格。
我是 Stata 的新手,我有一组变量,如:
global var1 " age sex"
global var2 "area"
global var3 "race"
我想遍历 3 个变量并应用一个函数,例如:
foreach a in $var1 $var2 $var3 { some function given `a'}
但问题是这个函数是通过 varlist 的内容一个一个地应用的,并且一个 for var1
取第一个值 age
然后 sex
当我想要它的时候采取 age sex
。您对这个问题有什么见解吗?
对此有多种解决方法。可以在
中看到一个简单的global var1 "age sex"
global var2 "area"
global var3 "race"
forval j = 1/3 {
di "${var`j'}"
}
您的问题引发了各种小问题:
虽然类似的项目在其他语言中会被称为变量,但全局宏在 Stata 中不被视为变量,因为变量(仅)是变量,意思是数据集中的列。
同样,你所说的函数在Stata中更可能是命令。命令和函数在 Stata 中不是同义词。
为了你展示的目的,使用局部宏会好很多。这是一般好的编程风格。