stata - 如何让Stata的语法命令忽略varlist中不存在的变量?

标签 stata

假设我想在 Stata 中定义一个程序:

capture program drop myprg
program define myprg
  syntax varlist

  foreach var of varlist `varlist' {
     disp "`var'"
  }
end

我希望我的程序能够接受数据集中存在的变量名称和不存在的变量名称。如果变量存在,它会显示名称。否则,它什么都不做。

假设我的数据集有两个变量:age1age2。当前输出为:

. myprg age1
age1

. myprg age*
age1
age2

. myprg varThatDoesntExist
variable varThatDoesntExist not found
r(111);

相反,最后一个命令的期望输出是:

. myprg varThatDoesntExist

.

如何获得此功能?

最佳答案

请参阅帮助了解语法namelist 规范概括了 varlist 以打印出任何名称、现有和合法的变量名称。

program myprg
  syntax namelist 

  foreach var of local namelist {
     disp "`var'"
  }
end

第一次发布此问题后要求的变体是打印实际变量名称并忽略其他任何内容。为此,您需要设置自己的解析。同样,请参阅 help 了解 syntax。你需要类似的东西

program myprg
    version 8.2 
    syntax anything 

    local varlist 
    foreach thing of local anything {
        capture unab Thing : `thing'  
        if _rc == 0 local varlist `varlist' `Thing'  
    }

    foreach v of local varlist { 
        di `"`v'"'  
    } 
end

关于stata - 如何让Stata的语法命令忽略varlist中不存在的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29829774/

相关文章:

python - 将代码从 vim 发送到外部应用程序以执行

dataset - 如何在 Stata 中计算 .dta 文件的行数和列数?

r - data.table 中的唯一标识符

stata - 在 Stata 中将值标签大写

loops - 在 Stata 中附加本地宏

python - 使用多进程和子进程在 python 中运行并行 Stata do 文件

r - 具有异方差校正的标准误差的回归

stata - 如何检查任何缺失值

Stata 分析不同商店的队列长度

stata - 使不平衡的面板与缺失的观察结果保持平衡