我希望创建一个ado
文件,它有四类变量。
这个想法是用户可以输入如下内容:
myprog depvar biggroup, ingroup(varlist1) outgroup(varlist2)
在此示例中,depvar
和biggroup
是单个变量,而ingroup
至少是两个变量而outgroup
是相同但可选的。
到目前为止,我尝试了以下内容:
program myprog, rclass
version 15
syntax varlist(min=2 max=2), ingroup(min=2) [outgroup]
local depvar: word 1 of `varlist'
...
end
我可以根据varlist
拆分word count
以创建depvar
和biggroup
变量,就像我为depvar
所做的那样。
但是,我不确定如何为ingroup
和outgroup
创建其他列表。问题是它们都可以包含不同数量的变量,我不知道如何用syntax
或args
命令来区分它们。
答案 0 :(得分:2)
您还可以为每个选项使用varlist
。或者您可以将它们作为字符串传递。
以下是使用varlist
:
capture program drop myprog
program define myprog, rclass
version 14
syntax varlist(min=2 max=2), ingroup(varlist min=2) [outgroup(varlist min=2)]
display ""
display "`varlist'"
display ""
display "`ingroup'"
display ""
display "`outgroup'"
end
. clear
. generate one = runiform()
. generate two = runiform()
. generate three = runiform()
. generate four = runiform()
. generate five = runiform()
. generate six = runiform()
. generate seven = runiform()
. myprog one two, ingroup(three four) outgroup(five six seven)
one two
three four
five six seven