[R] x[0]: Can '0' be made an allowed index in R?

Richard O'Keefe r@oknz @end|ng |rom gm@||@com
Wed Apr 24 01:54:46 CEST 2024


Does it have to use square bracket syntax?
elt <- function (x, i) x[i+1]
"elt<-" <- function (x, i, value) { x[i+1] <- value; x }

> u <- c("A","B","C")
> elt(u,0)
[1] "A"
> elt(u,length(u)-1)
[1] "C"
> elt(u,0) <- "Z"
> u
[1] "Z" "B" "C"

This works with any single-index value, and lets all the existing
operations for such values continue to work.  It seems to me to be the
simplest and cleanest way to do things, and has the advantage of
highlighting to a human reader that this is NOT normal R indexing.

On Sun, 21 Apr 2024 at 19:56, Hans W <hwborchers using gmail.com> wrote:
>
> As we all know, in R indices for vectors start with 1, i.e, x[0] is not a
> correct expression. Some algorithms, e.g. in graph theory or combinatorics,
> are much easier to formulate and code if 0 is an allowed index pointing to
> the first element of the vector.
>
> Some programming languages, for instance Julia (where the index for normal
> vectors also starts with 1), provide libraries/packages that allow the user
> to define an index range for its vectors, say 0:9 or 10:20 or even negative
> indices.
>
> Of course, this notation would only be feasible for certain specially
> defined vectors. Is there a library that provides this functionality?
> Or is there a simple trick to do this in R? The expression 'x[0]' must
> be possible, does this mean the syntax of R has to be twisted somehow?
>
> Thanks, Hans W.
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.



More information about the R-help mailing list