# Re: [R] Is there a better way than x[1:length(x)-1] ?

From: Gabor Csardi <csardi_at_rmki.kfki.hu>
Date: Thu 10 Aug 2006 - 19:30:55 EST

Jack,

in R ":" is an ordinary function with two arguments, ie. 1:10 is a function call with arguments 1 and 10. This way at the time ":" is evaluated the variable which will be indexed is not known; it is thus impossible to know its length. This is why it is not easy to implement "end" in R.

Since R is very good at computing 'on the language' there might be a way (i would call it hack) to implement 'end' but i'm not aware of it. Eg. you might consider writing a function like

```idx <- function(x, i) {
i <- substitute(i)
i <- eval(i, c(as.list(parent.frame()), end=length(x)))
```
x[i]
}

and then you can write things like this:

x <- 1:10
idx(x, 2:end)
idx(x, 2:(end-1))

R gurus, please correct me if i'm wrong. Gabor

On Wed, Aug 09, 2006 at 05:30:47PM -0700, John McHenry wrote:
> Hi WizaRds,
>
> In MATLAB you can do
>
> x=1:10
>
> and then specify
>
> x(2:end)
>
> to get
>
> 2 3 4 5 6 7 8 9 10
>
> or whatever (note that in MATLAB the parenthetic index notation is used, not brackets as in R). The point is that 'end' allows you to refer to the final index point of the array.
>
> Obviously there isn't much gain in syntax when the variable name is x, but when it's something like
>
> hereIsABigVariableName(j:end-i)
>
> it makes things a lot more readable than
>
> hereIsABigVariableName(j:length(hereIsABigVariableName)-i)
>
> In R I could do:
>
> n<- length(hereIsABigVariableName)
> hereIsABigVariableName[j:n-i]
>
> but I'd like to use something like 'end', if it exists.
>
> Am I missing something obvious in R that does what 'end' does in MATLAB?

>
> Thanks,
>
> Jack.
>
>
> ---------------------------------
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.

```--
Csardi Gabor <csardi@rmki.kfki.hu>    MTA RMKI, ELTE TTK

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help