你如何通过索引调用本地宏中的元素?

How do you call an element in a local macro by index?

这看起来简单得令人痛苦,但假设我创建了一个名为 example 的 Stata 本地宏:

local example "blah1 blah2 blah3"

我只想使用数字索引得到 blah2,其方式可能类似于

example[2]

用另一种语言。如何在 Stata 中做到这一点?

如果你运行这个脚本你会看到四种获取第二个单词的方法。

local example "blah1 blah2 blah3"

* 1 
tokenize "`example'"
di "`2'"

* 2 
local example2 : word 2 of `example'
di "`example2'"

* 3 
di "`: word 2 of `example''" 

* 4 
mata : words = tokens(st_local("example"))
mata : words[2]

在 Stata(与 Mata 相对)中,语法 words[2] 是完全合法的,只要 words 是一个变量,即数据集中的一列,但 Stata 中的局部宏是 不是那个意义上的变量。

clear 
set obs 3 
gen words = "blah" + strofreal(_n) 
di words[2]