如何在本地宏中为每个文件设置特定的文件顺序

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