如何在本地宏中为每个文件设置特定的文件顺序
How to set a specific file order for each file in a local macro
我在 Stata 中有一个引用本地宏的循环,我用它来 运行 几个动作(创建一个文件,运行 与每个文件关联的脚本等)。
一切都很好,但我想更改循环中读取文件的顺序,默认情况下是按字母顺序排列的。
我的循环如下所示:
foreach file of local myfiles {
noisily display as text "some text"
}
除了 display
命令之外,脚本继续执行我的代码。
有没有办法自定义循环寻址存储在本地宏中的文件的顺序?
我想在不更改文件名的情况下实现这一点。
以下对我有用:
local myfiles myfile1.dta myfile2.dta myfile3.dta myfile4.dta
tokenize `myfiles'
foreach x in `3' `1' `4' `2' {
display "`x'"
}
myfile3.dta
myfile1.dta
myfile4.dta
myfile2.dta
另一种方式如下:
local myfiles myfile1.dta myfile2.dta myfile3.dta myfile4.dta
local mf myfile2.dta myfile3.dta
local myfiles `mf' `: list myfiles - mf'
display "`myfiles'"
myfile2.dta myfile3.dta myfile1.dta myfile4.dta
我在 Stata 中有一个引用本地宏的循环,我用它来 运行 几个动作(创建一个文件,运行 与每个文件关联的脚本等)。
一切都很好,但我想更改循环中读取文件的顺序,默认情况下是按字母顺序排列的。
我的循环如下所示:
foreach file of local myfiles {
noisily display as text "some text"
}
除了 display
命令之外,脚本继续执行我的代码。
有没有办法自定义循环寻址存储在本地宏中的文件的顺序?
我想在不更改文件名的情况下实现这一点。
以下对我有用:
local myfiles myfile1.dta myfile2.dta myfile3.dta myfile4.dta
tokenize `myfiles'
foreach x in `3' `1' `4' `2' {
display "`x'"
}
myfile3.dta
myfile1.dta
myfile4.dta
myfile2.dta
另一种方式如下:
local myfiles myfile1.dta myfile2.dta myfile3.dta myfile4.dta
local mf myfile2.dta myfile3.dta
local myfiles `mf' `: list myfiles - mf'
display "`myfiles'"
myfile2.dta myfile3.dta myfile1.dta myfile4.dta