1

每当我在代码中添加新的谎言时(例如,当计算不同的估计值时)我不想再次重新运行整个 do 文件。但是,我经常需要在上一次运行 do-file 期间生成的某些本地宏的值。

有没有办法保持这些价值观?或者我应该改用更多的全局变量?

4

2 回答 2

3

是的,使用global.

但请注意,您需要小心global使用它的确切原因:宏一直保留在内存中,直到您退出该 Stata 实例,或者直到您在代码中重置它。

有些人对永远不使用有非常强烈的感觉global(请参阅第 5 页并在此处继续:http ://faculty.chicagobooth.edu/matthew.gentzkow/research/ra_manual_coding.pdf )。一旦你了解了它们的属性,并且不会引发它们可能导致的少量问题,你应该没问题。

于 2013-09-06T02:44:11.940 回答
2

全局变量绝不是唯一的选择。

首先,考虑使用标量。具有永久名称的标量将在 do-file 结束后继续存在。

其次,考虑将您的 do-file 转换为程序并了解保存的结果。

第三,您总是可以考虑将结果放入一个新变量中;只是它通常是糟糕的风格并且在存储上是浪费的。

猜测一下,第一个可能对您最有用。许多 Stata 用户乐于使用带有许多特定于数据集的语句的 do-files。跳到编写成熟且更通用的程序是一个很大的飞跃,而不是(起初)微不足道的。

于 2013-09-06T08:57:02.840 回答