我正在處理由其他人創建的.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