Stata:设置全局路径名失败

Stata:设置全局路径名失败,stata,Stata,我有一个配置文件。do,其中说明 global prog "C:\Users\foobar\Google Drive\Cloud\PhD\Projects\Labor Supply\LIAB_QM2_9310_v1_test_dta\prog" 然后我有一个不同的statadifferent.do文件,应该在其中设置这个变量 adopath ++ $prog 然而,结果证明这是行不通的。因此,我试图找出错误的根源: . display $prog C:\Users\foobar\Google

我有一个
配置文件。do
,其中说明

global prog "C:\Users\foobar\Google Drive\Cloud\PhD\Projects\Labor Supply\LIAB_QM2_9310_v1_test_dta\prog"
然后我有一个不同的stata
different.do
文件,应该在其中设置这个变量

adopath ++ $prog
然而,结果证明这是行不通的。因此,我试图找出错误的根源:

. display $prog
C:\Users\foobar\Google invalid name
使用
而不是
没有帮助:

. global prog 'C:\Users\sdaro\Google Drive\Cloud\PhD\Projects\Labor Supply\LIAB_QM2_9310_v1_test_dta\prog'

. display $prog
'C:\Users\sdaro\Google invalid name
r(198);

它似乎试图用某种东西替换
驱动器
,但我不知道该怎么做。如何解决此问题?

您的路径有空格,因此您需要周围的引号。定义宏时使用的引号是分隔符。调用时,
display
adopath
将删除它们

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

display "$prog"

adopath ++ "$prog"
如果不允许更改
adopath$prog
,可以使用双引号保护原始引号:

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

display $prog

adopath ++ $prog
请注意您收到的原始错误:

. display $prog
C:\Users\foobar\Google invalid name

因为您没有使用引号,所以Stata采用了一个变量名,而您拥有的名称是非法的(不能有
\
或空白).

FooBar,我想你误解了。Roberto的第二个例子,包含双引号,创建了一个全局变量,当在adopath语句中使用时,它成功地将新的目录、空格和all添加到adopath的前面。最后一个跟进:后面代码的一部分(我无法触及)也是
do“$prog/additionalPath“
。但是,此规范会导致错误:
display“$prog/additionalPath”
再次给我一个
无效名称
错误。除了双引号,还有其他方法允许我以这种方式执行此操作吗?我认为您已在
全局程序中更改了原始路径,并添加了您自己的路径。这是正确的吗?如果是,原始路径是否为空?如果您正在使用的新路径没有空格,则不会有任何问题。如果您坚持使用带空格的路径,但无法对代码的其他部分进行更改,则需要等待其他人发布其他解决方案。如果可以添加代码(但不能删除原始代码),则可以在需要时重新定义
全局
。它可以工作,但看起来或感觉都不对劲。@RobertoFerrer:我看不到原始的
配置文件。请执行
,因此我不知道原始路径是否包含空格。我想,有了这些信息,我会写一个新的问题,更准确地说明问题所在。