1)是否可以在stata中创建字符串向量? 2)如果是,那么是否可以遍历此向量中的元素,对每个元素执行命令?
要在stata中创建单个字符串,我知道你这样做:
local x = "a string"
但我有大约200个我需要循环的数据文件,并且它们不方便用连续的后缀命名,如“_2000”“_ 2001”“_2002”等。实际上文件名没有押韵或理由,但是我确实有一个列表,我可以轻松剪切并粘贴到字符串向量中,然后逐个调用此向量的元素,就像在MATLAB中一样。
有没有办法在stata中这样做?
答案 0 :(得分:6)
除了Keith的回答:您还可以使用
获取目录中的文件列表 local myfilelist : dir . files "*.dta"
或更一般地
local theirfilelist : dir <directory name> files <file mask>
请参阅help extended_fcn
。
答案 1 :(得分:4)
当然 - 您只需使用典型的本地电话创建一个列表。如果你没有在整个事情上加上引号,你的列表可能会很长。
local mylist aaa bbb "cc c" dd ee ff
然后你只需使用foreach
。
foreach filename of local mylist {
use `"`filename'"'
}
使用双引号(`" "'
)是因为其中一个文件名由于空间而在其周围引用了引号。这比将foreach filename in `mylist' {
放在第一行更快。
如果您想操纵列表,请参阅help macrolists
。
在stackoverflow上已经询问了相关问题&gt; 1次:
答案 2 :(得分:3)
许多人可能想要和我一样的两者结合。这是:
* Create a local containing the list of files.
local myfilelist : dir "." files "*.dta"
* Or manually create the list by typing in the filenames.
local myfilelist "file1.dta" "file2.dta" "file3.dta"
* Then loop through them as you need.
foreach filename of local myfilelist {
use "`filename'"
}
我希望有所帮助。请注意,本地/宏受67,784 characters的限制 - 当你有一个很长的文件列表或很长的文件名时,请注意这一点。