在Python中,我可以轻松地从列表中提取对:
>>>list1 = [1, 2, 3]
>>>list2 = [4, 5, 6]
>>>zip(list1, list2)
[(1, 4), (2, 5), (3, 6)]
如何在Stata中获得相同的结果?如果我有两个本地人,都包含相同数量的元素,怎么能产生类似Python的" zip"? (谷歌搜索这是一个噩梦,因为零膨胀泊松 - 即ZIP模型......)
答案 0 :(得分:1)
我认为没有专门的命令/功能,但考虑并行列表:
local agrp "cat dog cow pig"
local bgrp "meow woof moo oinkoink"
local n : word count `agrp'
forvalues i = 1/`n' {
local a : word `i' of `agrp'
local b : word `i' of `bgrp'
di "`a' says `b'"
}
请参阅http://www.stata.com/support/faqs/programming/looping-over-parallel-lists/。
答案 1 :(得分:1)
您可以将两个向量组合为Stata和Mata中的矩阵(其中向量可以包含字符串,其实还有很多其他内容)。这是Stata:
. mat list1 = [1, 2, 3]'
. mat list2 = [4, 5, 6]'
. mat list = list1, list2
. mat li list
list[3,2]
c1 c1
r1 1 4
r2 2 5
r3 3 6
你想用Stata中的这种结构做什么?正如@Roberto Ferrer的回答所指出的那样,你通常会在单独的列表中并行循环。