Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Confirm existence of a variable(s) with wildcards in the variable name

From   Nick Cox <>
Subject   Re: st: Confirm existence of a variable(s) with wildcards in the variable name
Date   Wed, 2 Feb 2011 09:13:29 +0000

I don't understand the need for circumspection here. If you try the
direct approach

. drop vari*

the -drop- won't work if there are no matching variable names. If you
are worried about this stopping a do-file or program that you want to
continue regardless, one of

. cap noi vari*

. noi cap vari*

should meet the purpose.

Mind you,

1. It would be very poor style in a public program (not that you're
proposing that) and dubious style in a private program to do this.

2. I'd be cautious about doing this even in a .do file. Depends what
you want to do, but there may be better ways to do it. Putting it in a
-drop- because it might be needed sounds as if you could bite you.
That said, the context might well make clear why this is perfectly


On Wed, Feb 2, 2011 at 3:05 AM, Eric Booth <> wrote:
> Following along with the -confirm- and -unab- help files, I first wrote this code:
> *****************!
> sysuse auto, clear
> local myvarlist   z* m* r* price for foo bar
> *note:    z*, foo, and bar are fake variables*
> foreach v in `myvarlist' {
>        loc j     // this resets j where the variable does not exist
>                    // otherwise you get duplicates in your varlist
>        cap unab j: `v'
>        foreach x in `j' {
>        cap confirm variable `x', exact
>        if !_rc {
>                loc newvarlist  `newvarlist' `x'
>                }
>          }
>        }
> di in y "`newvarlist'"
> *****************!
> but then I realized that the "cap unab j: `v'" was doing the work of filtering out fake variables from getting into the 'newvarlist' local before the "capture confirm" loop that I usually use for building these types of varlists had a chance to do its work.
> So,  I reduced it to the following snippet.  However, relying on -capture- alone (& leaving out the -confirm- loop) feels clumsy to me -- but I can't think of a condition that would make it fail.  Others will probably have more straightforward solutions.
> ****snippet****
> foreach v in `myvarlist' {
>        loc j
>        cap unab j: `v'
>                loc newvarlist  `newvarlist' `j'
>        }
> ****snippet****

> On Feb 1, 2011, at 8:12 PM, Will Probert wrote:

>> I'm trying to unabbreviate a variable list that contains a wildcard
>> and then keep those variables, if the variable(s) exist.  From my
>> understanding, the 'if' option in STATA's 'keep' and 'drop' commands
>> only act on observations, not on variables.
>> I'm trying code, unsuccessfully, along the lines of...
>> capture confirm unab new: varia*
>> if(_rc==0){
>>      unab new: varia*
>>      local newlist `new'
>> }
>> keep `newlist'

*   For searches and help try:

© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index