使用locals在Stata中构造路径

Ste*_*sen 4 stata

假设我hello.txt在目录中调用了一个文件c:\test\,那么以下运行在Stata中没有问题:

local folder "c:\test"
confirm file "`folder'\hello.txt"
Run Code Online (Sandbox Code Playgroud)

但以下不会

local folder "c:\test"
local file "hello.txt"
confirm file "`folder'\`file'"
Run Code Online (Sandbox Code Playgroud)

如何将多个本地组合成一个c:\test\hello.txt可以在confirm file命令中使用的路径?

提前致谢.

Maa*_*uis 5

问题是,\它既可以作为转义字符,也可以作为Windows文件路径的一部分.

当您在包含本地宏的Stata中键入内容时,Stata的第一个操作是评估该宏,即查看其内容并用该内容替换宏.有时(很少,但可能发生)你想要阻止它.这就是逃避角色的用途.

所以Stata在你的第二个例子中看到的是

c:\test`file'
Run Code Online (Sandbox Code Playgroud)

这不是一个有效的路径.

最简单的解决方案是使用a /而不是a \,就Stata而言,这将导致一个有效的路径,并且不会充当转义字符.

欲了解更多信息,请参阅:Nicholas J. Cox(2008)Stata提示65:谨防背刺的反斜杠.Stata Journal,8(3):446--447.

http://www.stata-journal.com/article.html?article=pr0042