2015-07-25 5 views
0

У меня есть profile.do, где говоритсяStata: Сбой при установке глобального пути

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); 

Похоже, он пытается заменить Drive с чем-то, но я не» получить. Как я могу исправить эту проблему?

ответ

2

Ваш путь имеет пробелы, поэтому вам нужны окружающие цитаты. Котировки, используемые, когда , определяющие, предназначены для разделителей. При вызове 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 предположил имя переменной, и у вас есть незаконное имя (не может быть : или \ или пробелы).

+0

FooBar, я думаю, вы неправильно поняли. Второй пример Роберто, содержащий двойные кавычки, создает глобальную переменную, которая при использовании в операторах consath преуспевает в добавлении нового каталога, пробелов и всех объектов в начало. –

+0

Последнее наблюдение: часть более позднего кода (который я не могу коснуться) также была «do» $ prog/дополнительнаяPath ». Однако эта спецификация приводит к ошибке: 'display '$ prog/дополнительнаяPath" 'снова возвращает ошибку' invalid name'. Есть ли альтернатива двойным кавычкам, которая до сих пор позволяет мне делать эту операцию таким образом? – FooBar

+0

Полагаю, вы изменили исходный путь в 'global prog' и добавили свой собственный путь. Это верно? Если да, исходный путь имел пробел? Если новый путь, который вы используете, не имеет пробелов, у вас не возникнет никаких проблем. Если вы настаиваете на использовании пути с пробелами, но вы не можете вносить изменения в другие части кода, вам нужно подождать, пока кто-то опубликует какое-либо другое решение. Если вы можете добавить код (но не удалять исходный код), вы можете переопределить 'global' всякий раз, когда вам нужно. Он работает, но он не выглядит или не кажется правильным. –

Смежные вопросы