stata - Check if varlist contains factor variables? -
i trying check if varlist in program contains factor variables. follow recommendation statacorp in page (http://www.stata.com/support/faqs/programming/factor-variable-support/). suggested codes are:
syntax varlist(fv) local fvops = "`s(fvops)'" == "true" | _caller() >= 11 if `fvops' { // within loop, can expand factor variable list, // create local version control , perform other // steps needed factor operated varlists }
nevertheless, appears me macro s(fvops)
not check existence of factor variables in varlist. simple example illustrate:
capture program drop test_fvops program test_fvops syntax varlist(fv) local fvops = "`s(fvops)'" == "true" | _caller() >= 11 qui reg `varlist' if `fvops' { di "factor variables specified" } else { di "factor variables not specified" } end sysuse auto,clear test_fvops price mpg foreign weight i.rep78 test_fvops price mpg foreign weight rep78
oddly, last 2 lines of code both return "factor variables specified". program not tell second line has no factor variables.
a further probe on properties of macro s(fvops)
makes me more confused.
sysuse auto,clear qui reg price mpg foreign weight i.rep78 local fvops = "`s(fvops)'" != "true" | _caller() >= 11 di "|s(fvops)=`s(fvops)'|fvops=`fvops'|" qui reg price mpg foreign weight rep78 local fvops = "`s(fvops)'" != "true" | _caller() >= 11 di "|s(fvops)=`s(fvops)'|fvops=`fvops'|"
in both cases, s(fvops)
empty fvops
1. tried return list
, sreturn list
, did not see s(fvops)
.
am using fvops
code correctly? running stata 13 on win 7.
added: nick's comment clarifies couldn't find in manual. _caller()
segment shouldn't have been included, , quote linked page needed understand s(fvops)
.
"to check if factor variables specified in varlist, may use saved macro
s(fvops)
syntax, equal “true” when factor variables specified >and empty otherwise."
with own program: working stata 13 , program not set version
else.
hence _caller()
greater 11 in both cases , test no test.
why not try displaying value of s(fvops)
?
with later code, "further probe": why expect s(fvops)
visible? never created it, did not use syntax
. local macro fvops
1 same reason: _caller()
more 11 , |
operator selects 1.
Comments
Post a Comment