2

1)是否可以在stata中创建字符串向量?2)如果是,那么是否可以遍历该向量中的元素,对每个元素执行命令?

要在 stata 中创建单个字符串,我知道你这样做:

    local x = "a string"

但是我有大约 200 个数据文件需要循环访问,并且它们不方便以连续后缀命名,如“_2000”“_2001”“_2002”等。事实上,文件名没有押韵或理由,但我这样做了有一个它们的列表,我可以轻松地将其剪切并粘贴到一个字符串向量中,然后像在 MATLAB 中所做的那样,一个一个地调用这个向量的元素。

有没有办法在stata中做到这一点?

4

3 回答 3

8

在基思的回答之上:您还可以获取目录中的文件列表

    local myfilelist    : dir . files "*.dta"

或更一般地说

    local theirfilelist : dir <directory name> files <file mask>

help extended_fcn

于 2012-04-09T04:18:57.613 回答
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上提出> 1次:

于 2012-04-09T00:17:35.870 回答
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 个字符——当您有一个非常长的文件列表或非常长的文件名时,请注意这一点。

于 2013-06-02T13:12:29.970 回答