我正在处理由其他人创建的.do文件。此人在整个文件中使用分号分隔符。我正在尝试浏览此文件,看看发生了什么。我喜欢通过选择部分代码并点击“执行选择(执行)”按钮来完成此操作。但是,分隔符似乎弄乱了这个。我有什么变通方法吗?
答案 0 :(得分:2)
假设你的文件是这样的:
#delimit ;
set obs
10 ;
gen x = _n ;
gen y = x^2 ;
gen z = x
^3;
任何时候突出显示一个选择并按“执行选择(执行)”,Stata会创建一个临时的,自包含的文件,默认分隔在cr
并运行:
"When a do-file begins execution, the delimiter is automatically set to
carriage return, even if it was called from another do-file that set the
delimiter to semicolon."
它不会从控制台顺序运行这些命令。因此,如果您在上面的do文件中选择前2个命令,则临时do-file包含对#delimit
的调用,而如果选择了最后2个命令,则临时do-file将不会进行此调用,会为两行命令抛出语法错误。
一种解决方案可能是将选择复制粘贴到刚开始时只有#delimit
命令的新文件,然后运行它。
您还可以编写一个脚本来删除分号的文件。如果一行不以分号结尾,则将下一行附加到当前行的末尾,然后再次检查此行。根据文件在do文件中的复杂程度,这或多或少会很困难。
答案 1 :(得分:1)
另一个选项是通过将/* */
括起来并使用exit;
来阻止您已经运行过的行。你必须要小心使用本地宏。