Stata:在变量

时间:2015-07-31 09:29:46

标签: stata

我正在使用机构A 的代码,其中包含其他内容,

adopath ++ $prog
use "$prog/subDirectory/otherFile.do"

实际的do文件是我尝试不改变的东西,正如我所知,在当前状态下,它将与机构A 一起使用。

我要定义自己的profile.do以使其有效,我需要设置$prog。我无法看到机构A 如何设置他们的profile.do,以及它是否包含禁用的字符。 $prog应该包含工作目录,在我的例子中是

global prog "C:\Users\foobar\Google Drive\Cloud\PhD\Projects\Labor Supply\LIAB_QM2_9310_v1_test_dta\prog"

当我学习in another question时,空格是禁止的字符,这就是为什么这个设置肯定不起作用的原因。我被建议使用双引号,

global prog ""C:\Users\foobar\Google Drive\Cloud\PhD\Projects\Labor Supply\LIAB_QM2_9310_v1_test_dta\prog""

这些在某种程度上运作良好,adopath ++ $prog现在运行顺利。但是,第二个命令use "$prog/subDirectory/otherFile.do"现在包含错误。所以这是我的问题

  • 第一最佳:是否有一种不同的方式来定义$prog,允许我运行代码的其余部分而不会出错?
  • 第二好:有没有一种安全的方法来重写use "$prog/subDirectory/otherFile.do"?也就是说,如果我将其重写为use $prog"/subDirectory/otherFile.do",并且它继续在我的系统上工作,我保证它可以在旧代码工作的任何地方工作吗?我可以安全地交换这段代码,同时保证持续的功能吗?

1 个答案:

答案 0 :(得分:2)

第二好:

profile.do

global prog "C:\Users\foobar\Google Drive\Cloud\PhD\Projects\Labor Supply\LIAB_QM2_9310_v1_test_dta\prog"

机构A的代码

capture adopath ++ $prog
if (_rc != 0) adopath ++ "$prog"

use "$prog/subDirectory/otherFile.do"

真的很挑剔,你会用!=代替==0代替预期的错误代码;例如198(适用于invalid syntax)。

此解决方案尊重原始代码,如有必要,将充分处理 profile.do 文件产生的错误。

(同样,如果您的工作目录没有空白,这不会有问题。)