sungmoo 发表于 2010-2-1 08:43
*若把两个数字放入必选项中,可省略几行(但输入命令时要多输入几个字符);另外控制了不能同时输入ns与s:
cap pr drop ntest
pr ntest
qui{
clear all
syntax ,n(numlist >0 asc min=2 max=2) [ns s(str)]
if "`ns'"!=""&"`s'"!=""{
n di as error "ns and s should not be input together"
exit
}
token `n'
local i=`2'-`1'
set obs `i'
gen x=`1'*`2'
if "`ns'"==""{
if "`s'"!="" save `s',replace
else save test,replace
}
}
end
sungmoo 发表于 2010-2-1 08:43
*若把两个数字放入必选项中,可省略几行(但输入命令时要多输入几个字符);另外控制了不能同时输入ns与s:
cap pr drop ntest
pr ntest
qui{
clear all
syntax ,n(numlist >0 asc min=2 max=2) [ns s(str)]
if "`ns'"!=""&"`s'"!=""{
n di as error "ns and s should not be input together"
exit
}
token `n'
local i=`2'-`1'
set obs `i'
gen x=`1'*`2'
if "`ns'"==""{
if "`s'"!="" save `s',replace
else save test,replace
}
}
end
arlionn 发表于 2010-2-1 11:20
事实上,eblog 所设定的 Nosave 选项不是最佳的选择,若设定成 Save(filename) 会比较符合常规,呵呵。
……
另,sungmoo,虽说把 t1, t2 放到选项中,在写程序时可省略几行,但用的时候稍微麻烦一些。我有点奇怪,为何stata的syntax标准格式中只提供 syntax varlist, syntax namelist 这类的东东,若能提供 syntax numlist 这样的格式我们就不用这么费事了,呵呵。或许是stata考虑到,多数的操作都是以“变量”为基础的吧。
arlionn 发表于 2010-2-1 11:20
事实上,eblog 所设定的 Nosave 选项不是最佳的选择,若设定成 Save(filename) 会比较符合常规,呵呵。
另,sungmoo,虽说把 t1, t2 放到选项中,在写程序时可省略几行,但用的时候稍微麻烦一些。我有点奇怪,为何stata的syntax标准格式中只提供 syntax varlist, syntax namelist 这类的东东,若能提供 syntax numlist 这样的格式我们就不用这么费事了,呵呵。或许是stata考虑到,多数的操作都是以“变量”为基础的吧。
eblog 发表于 2010-2-1 12:09以下代码应该可以比较方便的控制参数为numeric:
syntax anything
foreach x in `anything' {
qui cap assert sqrt(abs(`x'))!=.
if _rc {
di as text _n "The input " as result "`x'" as text " not be numeric! try again please! "
exit
}
}
sungmoo 发表于 2010-2-1 12:21……eblog 发表于 2010-2-1 12:09以下代码应该可以比较方便的控制参数为numeric:
syntax anything
foreach x in `anything' {
qui cap assert sqrt(abs(`x'))!=.
if _rc {
di as text _n "The input " as result "`x'" as text " not be numeric! try again please! "
exit
}
}
syntax anything
if indexnot("`anything'"," 0123456789"){
di as error "Only 0-9 and space can be input"
exit
}
……
扫码加好友,拉您进群



收藏
