Please someone correct me if i'm wrong, but i think this is impossible
with the current R language. ':' is an ordinary function (see
get(":")) just like "[", so v[1:3] is actually the composition of two
functions, it is the same as "["(":"(1,3)). The ":" has no idea about
whether it'll be embedded into a "[" function of not, it certainly
cannot know the length of the vector i'll be indexed with.

While this has the drawback you mentioned, it also has some
advantages, when someone writes something like

lapply(l, "[[", 1)

or 

lapply(10:1, ":", 20)

So, I'm afraid you'll have to live with length(v).

Gabor

On Sat, Nov 24, 2007 at 12:49:59PM +0300, Alexy Khrabrov wrote:
> What are idioms for taking a head or a tail of a vector, either up to  
> an index, or from an index to the end?  Also -- is it necessary to  
> use length(v) to refer to the last element? E.g., Python has
> 
> v[:3] # indices 0,1,2
> v[3:] # indices 3,4,...
> v[-1] # the last element of v
> v[:-1] # all but last
> 
> Cheers,
> Alexy
> 
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

-- 
Csardi Gabor <[EMAIL PROTECTED]>    MTA RMKI, ELTE TTK

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to