2

我编写了一个生成新变量的 .ado 程序。我希望将默认后缀附加到新变量,但允许用户指定后缀。也就是说,默认情况下附加_tr到原始变量的名称,但允许用户指定的后缀,比如_tr1pct.

这可能syntax吗?

我的syntax线路如下。

syntax varlist [if] [in] ///
    [, Byvar(varlist) Tail(real 1) ///
    Suffix(string) noRelabel]

并且后缀在程序中稍后应用如下。

clonevar `x'_`suffix' = `x' ///
    if `thisuse' & inrange(`pct', `tail', 100 - `tail')

我试过Suffix(string tr)and Suffix(string "tr"),但这些是语法错误。我想我不能有一个选项的默认参数(无论如何我都找不到任何关于字符串选项的默认值)。

有没有办法给本地宏suffix一个默认值?

4

1 回答 1

3

是的。您可以声明Suffix(string)为一个选项,然后在syntaxgo

if "`suffix'" == "" local suffix "_tr"

如果用户没有指定参数,本地宏suffix将为空,您可以定义它应该是什么。这是一个默认值。

我不知道为什么syntax不允许这样做,但我认为这是标准程序,因为它不允许。

于 2013-09-01T18:08:15.343 回答