
问题背景
如下是 Stata 连享会 FAQ 邮箱 (StataChina@163.com) 中收到的一个问题:
各位老师好,这个是 python 中 for 循环的一种形式,具体的名字我也不太懂,姑且叫配对循环吧。一般的是 foreach i in
遍历对象 {}
。请问,Stata 有没有那种 foreach i j in
遍历 对象 1 遍历 对象 2{} 这样的设置呢?Stata 里面可以这样子配对循环吗?
list1 = ['a', 'b', 'c', 'd']
list2 = ['apple', 'boy', 'cat', 'dog']
for x, y in zip(list1, list2):
print(x, 'is', y)
# 输出
a is apple
b is boy
c is cat
d is dog
我觉得这种遍历方式其实还蛮必要的,因为很多时候比如循环某个程序,最后要输出个图,图名或者图例要设置吧,但设置图名图例肯定要进行所谓的配对循环,而非嵌套循环。
请老师指教。谢谢
一个可能的解决方法
Stata 中似乎没有直接可以实现上述功能的函数或命令。不过我们可以自己编写一个,随后如果有必要,可以封装成一个通用程序。
clear
local s1 "a b c d"
local s2 "apple boy cat dog"
local i = wordcount("`s1'")
forvalues s=1/`i'{
dis ustrword("`s1'",`s') " is " ustrword("`s2'",`s')
}
输出结果如下:
. clear
. local s1 "a b c d"
. local s2 "apple boy cat dog"
. local i = wordcount("`s1'")
. *local j = wordcount("`s2'")
.
. forvalues s=1/`i'{
2. dis ustrword("`s1'",`s') " is " ustrword("`s2'",`s')
3. }
a is apple
b is boy
c is cat
d is dog
关于我们
- 【Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。
- 公众号推文同步发布于 CSDN-Stata连享会 、简书-Stata连享会 和 知乎-连玉君Stata专栏。可以在上述网站中搜索关键词
Stata
或Stata连享会
后关注我们。 - 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。
- Stata连享会 精彩推文1 || 精彩推文2
联系我们
-
欢迎赐稿: 欢迎将您的文章或笔记投稿至
Stata连享会(公众号: StataChina)
,我们会保留您的署名;录用稿件达五篇
以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。 - 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
- 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
- 联系邮件: StataChina@163.com
往期精彩推文
- Stata连享会推文列表1
- Stata连享会推文列表2
- Stata连享会 精彩推文1 || 精彩推文2


网友评论