It can be done in one line too:
mat a = a[1, 1 .. `=colsof(a) - 5']
There is a slippery slope here. First, once
you know that you can do things like that above,
you realise you don't need a specific extra function.
In principle, the idea that there should be
a function to solve each problem sounds good,
but who decides what counts as a problem
and who ends up dealing with the consequences?
For example, a language with 1000 functions isn't
necessarily better than one with 100 functions. It could
just become 10 times more difficult to document, to
read and to learn.
In any case, there may be other solutions; it's just
that I have not thought of them.
Nick
n.j.cox@durham.ac.uk
Rachel
> Thanks Nick, this works. I was hoping for a one step command
> (analagous to the functionality for strings in your -renvars-
> command) that did not involve computing the length, but apparently
> this doesn't exist.
>
> On 3/8/07, Nick Cox <n.j.cox@durham.ac.uk> wrote:
> > You may not know the length, but Stata does, so
> > does this suit?
> >
> > . matrix a = (1,2,3,4,5,6,7,8,9,10)
> >
> > . mat list a
> >
> > a[1,10]
> > c1 c2 c3 c4 c5 c6 c7 c8 c9 c10
> > r1 1 2 3 4 5 6 7 8 9 10
> >
> > . local last = colsof(a) - 5
> >
> > . matrix a = a[1, 1..`last']
> >
> > . mat list a
> >
> > a[1,5]
> > c1 c2 c3 c4 c5
> > r1 1 2 3 4 5
> >
> >
> > Nick
> > n.j.cox@durham.ac.uk
> >
> > Rachel
> >
> > > Is there a Stata (rather than Mata) utility that will
> remove the last
> > > n elements of a vector? Is there some way of doing this without
> > > explicitly without knowing (or evaluating) the length of
> the vector?
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/