如何获取宏的价值指数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取宏的价值指数相关的知识,希望对你有一定的参考价值。
我有一个全球宏:
global global_macro sheep frog dragon
我循环遍历这个宏,我希望能够根据global_macro
的当前索引值生成三个新变量:
foreach i in $global_macro {
***define local index***
...
gen new_var_`index' = 5
}
所以我希望它产生变量new_var_1
,new_var_2
和new_var_3
,因为sheep
是global_macro
中的第一个值,frog
是第二个,而dragon
是第三个。 index
首先包含1
,然后是2
,最后是3
。
我知道扩展宏函数中基本上存在相反的功能,称为word
。这允许人们基于索引访问宏中的值 - 而不是基于值访问索引。
有功能可以做我想做的事吗?
答案
我认为这样做你想要的:
clear
set more off
// original list/indices
local wordlist sheep frog dragon
// attach indices to words
quietly forvalues i = 1/3 {
local creature : word `i' of `wordlist'
local `creature'_idx `i'
}
// access indices based on words
foreach i in frog dragon sheep {
display "Creature `i' has index ``i'_idx'"
}
它可能是重构的,但主要的是为每个单词创建一个保持其相应索引的local
;然后你可以访问任何单词的索引(基于单词)。
(我可能会错过一些明显的功能/命令来做你想做的事。)
另一答案
这应该做到这一点
local n: word count $global_macro
forval index = 1/`n' {
gen new_var_`index' = 5
}
最好
以上是关于如何获取宏的价值指数的主要内容,如果未能解决你的问题,请参考以下文章