每当我为代码添加新的谎言时(例如,在计算不同的估计时),我不想再次重新运行整个do文件。但是,我经常需要在上一次运行do-file期间生成的某些本地宏的值。
有没有办法保留这些价值观?或者我应该转而使用更多全局变量?
答案 0 :(得分:3)
是的,请使用global
。
但请注意,由于您使用它的确切原因,您需要小心global
:宏将保留在内存中,直到您退出该Stata实例,或直到您在代码中重置它为止。
有些人对于不使用global
有非常强烈的感受(参见第5页,并在此处继续:http://faculty.chicagobooth.edu/matthew.gentzkow/research/ra_manual_coding.pdf)。一旦你了解了他们的财产,并且不会招致他们可能造成的少量问题,你应该没事。
答案 1 :(得分:2)
全球不是唯一的选择。
首先,考虑使用标量。具有永久名称的标量将在do文件的末尾之后存活。
其次,考虑将您的文件转换为程序并了解已保存的结果。
第三,您始终可以考虑将结果放入新变量中;只是它通常是糟糕的风格和存储浪费。
猜测,第一个可能对你最有用。许多Stata用户很乐意使用带有许多特定于数据集的语句的do文件。跳到写完全成熟和更一般的程序是一个巨大的跳跃,而不是(起初)微不足道。