【问题标题】:Comparing elements of two different local macros比较两个不同本地宏的元素
【发布时间】:2014-06-27 16:05:13
【问题描述】:

我有一个名为 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
    }
}

我将不胜感激有关实现此目的的替代方法的任何建议。

【问题讨论】:

    标签: stata stata-macros


    【解决方案1】:

    你没有说你的代码在什么意义上“没有工作”,也没有提供可重现的例子。尽管如此,您似乎正在沿着正确的路线工作。

     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
    

    【讨论】:

    • 嗨尼克,非常感谢 - 这非常有效。正如您所指出的,我必须将“in”替换为“of”。非常感谢。帕鲁尔
    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 2022-08-16
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 2016-09-30
    相关资源
    最近更新 更多