To the R-Help list,

I would like to have a clarification about an issue that I observe when subsetting a vector. This is R version 4.3.3 on Windows 10.

-- Example with a vector:

> a <- 1:5
> a
[1] 1 2 3 4 5

So we have, with a negative index:
> a[-3]
[1] 1 2 4 5

But when the index is integer(0), we have this:

> a[integer(0)]
integer(0)
> a[-integer(0)]
integer(0)

When it comes to the function integer(), the R Help file says:

"Value: integer creates a integer vector of the specified length. Each element of the vector is equal to 0."

But we see below that integer(0) is some kind of null vector, that is, no numbers are represented by integer(0):

> class(integer(0))
[1] "integer"
> length(integer(0))
[1] 0

So my question: in the expression a[-integer(0)], what happens exactly with the index -integer(0)? We see that integer(0), although of class integer, does not represent any numbers, as its length is zero, so it seems to me that it makes no sense to calculate its negative -integer(0). What exactly is -integer(0)?

In particular, why a[-integer(0)] is not the whole vector a, that is, [1] 1 2 3 4 5? In the example below, if the invalid index -99 is presented to a, the result is the whole vector:

> a[-99]
[1] 1 2 3 4 5

If -integer(0) is an invalid index, why do we have this?

> a[-integer(0)]
integer(0)

Why a[-integer(0)] is not the whole vector a?

Thank you very much.

Paulo Barata

Rio de Janeiro, Brazil

______________________________________________
R-help@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.

Reply via email to