【问题标题】:Referring to macros within a loop in Stata在Stata的循环中引用宏
【发布时间】:2020-04-08 15:32:32
【问题描述】:

我试图在 Stata 的循环中引用一个宏。下面是一个简单的例子。

local x1 age race gender
local x2 age race gender city

local nums 1 2 
foreach i of local nums{
reg y $x`i'
}

我希望循环通过 i(i = 1,2) 的两个计算并运行两个回归。我无法引用宏 - 任何帮助将不胜感激!

【问题讨论】:

    标签: loops macros stata economics stata-macros


    【解决方案1】:

    您的代码没有显示任何全局宏。本地宏nums 看起来是合法定义和使用的,但无缘无故地使代码变得更加复杂。

    local x1 age race gender
    local x2 age race gender city
    
    forval i = 1/2 {
        reg y `x`i'' 
    }
    

    可能更接近你想要的。请参阅有关本地宏的文档,例如this chapter in the manuals

    【讨论】:

    • 感谢您指出这一点,尼克 - 很抱歉没有将其包含在原始 q 中,我现在已经对其进行了编辑。我在循环中尝试了reg y xi'' ,但生成的 reg 输出没有 xvars (age,race,gender) 所以我假设它在这里没有引用宏 x1 或 x2 中的变量。重新表述这个问题,我正在努力在循环内使用存储在宏中的变量。例如: `forval i = 1/2{ { foreach i of local nums{ di $xi'' } 我知道di $xi' ` 是不正确的,但是如何获取存储在 x1 和 x2 里面的 vars环形。谢谢!
    • 感谢您在一个细节上修复您的代码。但是您的评论似乎犯了一个已经解释过的错误。如果您没有定义全局宏,那么 $ 表示法就是错误的。此外,您似乎正在编写一个嵌套循环。您的问题中只有一个循环。只要您一次运行所有代码,我的答案中的代码就应该运行。
    • 我认为您的真正问题更复杂,这很好。但据记录,两个回归需要两个 regress 命令,仅此而已。
    • 谢谢!使用您的代码一次运行整个事情可以正常工作。我有一组回归,但我现在只需使用两个回归命令即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多