我正在处理由其他人创建的.do文件。此人在整个文件中使用分号分隔符。我正在尝试浏览这个文件,看看发生了什么。我喜欢通过选择部分代码并点击“执行选择(做)”按钮来完成此操作。然而,分隔符似乎搞乱了这一点。我有没有解决办法?命令行中的Stata分隔
回答
假设你的待办事项文件看起来是这样的:
#delimit ;
set obs
10 ;
gen x = _n ;
gen y = x^2 ;
gen z = x
^3;
任何时候当你选中一个选项,然后按“执行选择(做)”,塔塔会创建一个临时的,独立的做文件,默认划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-file中的前2个命令,则临时do-file将包含对#delimit
的调用,而如果选择了最后2个命令,则临时do-file将不会有此调用,并会引发语法两行命令错误。
一个解决方案可能是将选择复制粘贴到刚开始有#delimit
命令的新处理文件,然后运行该文件。
你也可以编写一个脚本来清除你的分号分号。如果一行不以分号结尾,则将下一行附加到当前行的末尾,然后再次检查该行。根据你的do-file中语法的复杂程度,这可能或多或少有些困难。
我想摆脱分号,但文件很长。我发现了一些类似于您创建新文件和复制粘贴的建议。它建议创建一个profile.do文件并在其中包含“#delimit;”。这会工作吗?我发现这个建议[这里](http://stackoverflow.com/questions/5985751/how-to-execute-multiple-line-selection-in-do-file-editor-of-stata)。如果可行,我将在哪里存储profile.do文件,并且在处理其他不涉及''delimit''的文件时,是否需要删除它? – bill999 2014-10-28 15:24:17
你可以试试,但我认为它不会起作用。 'profile.do'在每个Stata会话开始时运行,而不是在运行新的do-file时运行。只要你运行一个没有'#delimit'命令的do-file,它就默认设置为'cr'。 – 2014-10-28 15:30:45
哎呀。感谢所有的帮助。听起来最好的做法是替换一切,避免在未来使用分隔符。 – bill999 2014-10-28 15:31:56
另一种选择是通过用/* */
括住它们并使用exit;
您想要停止的位置注释掉已经运行的行。你必须对本地宏有点小心。
- 1. 命令行中的行分隔符
- 2. Stata中的st命令的R命令
- 3. Tabulate命令Stata
- 4. 运行JavaScript命令每隔X分钟
- 5. Fish中的分隔命令替换
- 6. Stata中>命令的意义
- 7. 逗号分隔WMIC命令
- 8. gdb中的多个命令以某种分隔符';'分隔?
- 9. Stata下降观察命令
- 10. Stata - r级命令 - 指导
- 11. 没有分隔符的拆分命令
- 12. 如果在Stata中输入命令11
- 13. 在Stata中使用群集kmeans命令
- 14. 从java中的命令行指定制表符分隔符等
- 15. 从Stata中的外部文本文件执行命令
- 16. lme4 :: glmer与Stata的melogit命令
- 17. 相当于Stata的`compress`命令?
- 18. Setuptools,在一行中明确地分隔多个命令调用
- 19. SQLite在单行命令中定义输出字段分隔符
- 20. 在C#中每隔1分钟执行一次命令
- 21. 字段分隔符 - 麻烦分隔命令字符
- 22. 命令查询分隔:命令必须返回无效?
- 23. 红移COPY命令与“^ A”分隔符
- 24. 命令查询分隔验证重试
- 25. Redshift COPY命令分隔符未找到
- 26. 如何分隔一行多个命令的输出?
- 27. Stata命令:重复截面VS面板
- 28. 使用新命令时Stata错误
- 29. 计算在Stata与if命令
- 30. R和Stata合并命令比较
这应该不会引起任何问题......你有没有在运行任何选择之前通过#delimit设置你的分隔符? – 2014-10-28 14:54:29
我不能在命令行中使用''#delimit;'''。如果我从.do文件运行选择,我想我必须有''#delimit;''作为选择的一部分,这是不会发生的,因为在开始时总是包含这个每一个选择。 – bill999 2014-10-28 14:58:05