[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
st: RE: Referring to a varname, leading to errors
> This is one of those problems that only arises out of human error.
> Nonetheless, Stata is set up to allow this mistake to go unchecked.
> Consider the following example...
> Suppose a variable currently exists with the name "abcdefg" and one
> wants to condition on a different variable, abcde, such
> that one runs a
> command only for abcde == 1. If abcde has not been created
> (i.e. human
> error, the creation of this variable having been overlooked), the
> command "reg y1 x1 x2 if abcde == 1" would actually be run
> on abcdefg == 1, not abcde == 1.
> I suppose the idea behind allowing shortened varnames is one of
> convenience. However, this seems like more trouble than it
> is worth.
> Is there a way to toggle between allowing such shortened
> names and not?
> A permanent fix would be even better.
We can argue over whether allowing abbreviated
varnames -- or indeed abbreviated command names --
was a design mistake, and when the feature bites
you, you certainly think it may have been.
However, this example does not seem that scary.
A habit of clicking on variable names in the Variables window
can help in this circumstance.
In general, Pandora -- or more precisely Bill Gould
-- opened the box many years ago, and I don't think that
act can be reversed. I don't think there is a completely
general way of setting Stata to acting if and only if
variable names supplied are the unabbreviated versions. There
are solutions to specific problems, e.g. you can write
a program to -drop- what you specify if and only if
what you name includes complete variable names.
-drop-ping something important by accident
can be an issue.
It's not your question, but I'm reminded that some years
ago someone suggested that Stata programmers should not
be allowed to abbreviate command names, because it made
programs more difficult for beginners to understand, so
that every program should only include full command names.
That didn't get any support from programmers.
* For searches and help try: