美文网首页
Stata程序: 是否有类似 Python 中的 zip() 函

Stata程序: 是否有类似 Python 中的 zip() 函

作者: stata连享会 | 来源:发表于2019-01-07 15:12 被阅读187次

问题背景

如下是 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专栏。可以在上述网站中搜索关键词StataStata连享会后关注我们。
  • 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。
  • Stata连享会 精彩推文1 || 精彩推文2

联系我们

  • 欢迎赐稿: 欢迎将您的文章或笔记投稿至Stata连享会(公众号: StataChina),我们会保留您的署名;录用稿件达五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
  • 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。
  • 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。
  • 联系邮件: StataChina@163.com

往期精彩推文


欢迎加入Stata连享会(公众号: StataChina)

相关文章

网友评论

      本文标题:Stata程序: 是否有类似 Python 中的 zip() 函

      本文链接:https://www.haomeiwen.com/subject/lmuurqtx.html