比较两个不同的本地宏的元素

时间:2014-06-27 16:05:14

标签: stata stata-macros

我有一个名为peer_list的本地宏,它包含280个不同的元素,所有元素都是字符串。我还有另一个名为used_list的本地宏,它包含本地peer_list中包含的元素的子集。

对于peer_list中的每个元素,我想测试该元素是否在本地used_list中。如果元素存在于used_list中,我想丢弃它,否则我想执行另一组条件。

我尝试使用以下代码,但它没有工作:

foreach peer in local peer_list {
    if `:list peer in local used_list' {
        * commands I wish to execute
    }
    else {
        * commands I wish to execute
    }
}

对于完成此任务的其他方法,我将不胜感激。

1 个答案:

答案 0 :(得分:5)

你没有说你的代码在什么意义上“没有用”,你没有提供可重复的例子。然而,你似乎正在沿着正确的方向努力。

 local beasts frog toad newt unicorn griffin 
 local real frog toad newt 

 foreach b of local beasts { 
     if `: list b in real' { 
         di "`b' is real" 
     } 
    else di "`b' is fabulous" 
 } 

 frog is real
 toad is real
 newt is real
 unicorn is fabulous
 griffin is fabulous

类似代码的常见错误是在不同的语言环境中定义和使用本地宏,以便它们无法相互看到。

更明显的错误是您需要关键字of而不是in。你拥有的是合法的,但不是你想要的。比较

foreach b in local beasts {
    di "`b'"
}

local
beasts