当我启动一个 do-file 以将 do-file 的路径恢复为变量时,是否有可能?
我正在与合著者共享一个项目(通过 Dropbox)。因此,文件夹(数据、日志等)的结构在两侧是相同的。
但是文件夹在我和我的合著者的文件系统上的位置不同。因此,编写与文件夹路径等无关的 do-file 对我们很有帮助。
我们希望我们的项目的路径不要被硬编码。
谢谢!
你可以在这片领土上做各种各样的事情,包括
将目录名称作为参数传递给 do 文件。例如,
do mydo d:/myproject/data1812
Run Code Online (Sandbox Code Playgroud)
启动文件mydo.do并将特定目录的参数传递给 do 文件。在 do 文件中,您可以将参数作为
local myfolder "`1'"
Run Code Online (Sandbox Code Playgroud)
即传递的东西作为本地宏 1 传递。(任何其他参数都是本地宏 2、3 等)
确保您对位置的引用和特别是文件在 do 文件中是相对的,并从父目录运行 do 文件。
在您的主 do 文件中使用全局宏来定位位置,然后在您首先运行的主 do 文件中重新定义它们。
注意:最好使用正斜杠,即使在 Windows 下;Stata 会翻译。另外,如果有嵌入的空格,请用双引号将整个内容绑定。
do mydo "d:/my project/data1812"
Run Code Online (Sandbox Code Playgroud)
第二个似乎最接近您在特定位置不接线的偏好。但是如果你使用来自不同地方的文件,你必须以某种方式告诉Stata它们在哪里......