From ruipb@rr@d@@ @ending from @@po@pt  Sun Aug  5 10:45:39 2018
From: ruipb@rr@d@@ @ending from @@po@pt (Rui Barradas)
Date: Sun, 5 Aug 2018 09:45:39 +0100
Subject: [Rd] Is this a bug in `[`?
In-Reply-To: <90106d5c-4af6-b752-89f6-ca67030dfa46@pburns.seanet.com>
References: <4cf085ac-8f7e-38b5-ea02-302df94ad7b5@sapo.pt>
 <CALEXWq2LxX7TUS5ia2R3o6GwxdkDZe_PZ=UZ1zfFWLTY1OTS=g@mail.gmail.com>
 <b36d8e0e-431a-e1a5-bbe4-227351fd8c70@sapo.pt>
 <CAPekMCkyF5f90dXLh6WJZwqXpKPbrg2sLrN-DdjqAoxXGbCtXA@mail.gmail.com>
 <bd6150f0-c23d-741f-13c0-cf0f31228b2b@sapo.pt>
 <90106d5c-4af6-b752-89f6-ca67030dfa46@pburns.seanet.com>
Message-ID: <1419079d-390e-fe88-365d-9f91232c6508@sapo.pt>

Thanks,

This is what I needed.
I had read the R Inferno a long time ago and apparently forgot this one.

Rui Barradas

?s 08:46 de 05/08/2018, Patrick Burns escreveu:
> This is Circle 8..1.13 of the R Inferno.
> 
> 
> On 05/08/2018 06:57, Rui Barradas wrote:
>> Thanks.
>> This is exactly the doubt I had.
>>
>> Rui Barradas
>>
>> ?s 05:26 de 05/08/2018, Kenny Bell escreveu:
>>> This should more clearly illustrate the issue:
>>>
>>> c(1, 2, 3, 4)[-seq_len(4)]
>>> #> numeric(0)
>>> c(1, 2, 3, 4)[-seq_len(3)]
>>> #> [1] 4
>>> c(1, 2, 3, 4)[-seq_len(2)]
>>> #> [1] 3 4
>>> c(1, 2, 3, 4)[-seq_len(1)]
>>> #> [1] 2 3 4
>>> c(1, 2, 3, 4)[-seq_len(0)]
>>> #> numeric(0)
>>> Created on 2018-08-05 by the reprex package (v0.2.0.9000).
>>>
>>> On Sun, Aug 5, 2018 at 3:58 AM Rui Barradas <ruipbarradas at sapo.pt 
>>> <mailto:ruipbarradas at sapo.pt>> wrote:
>>>
>>>
>>>
>>> ??? ?s 15:51 de 04/08/2018, I?aki ?car escreveu:
>>> ???? > El s?b., 4 ago. 2018 a las 15:32, Rui Barradas
>>> ???? > (<ruipbarradas at sapo.pt <mailto:ruipbarradas at sapo.pt>>) escribi?:
>>> ???? >>
>>> ???? >> Hello,
>>> ???? >>
>>> ???? >> Maybe I am not understanding how negative indexing works but
>>> ???? >>
>>> ???? >> 1) This is right.
>>> ???? >>
>>> ???? >> (1:10)[-1]
>>> ???? >> #[1]? 2? 3? 4? 5? 6? 7? 8? 9 10
>>> ???? >>
>>> ???? >> 2) Are these right? They are at least surprising to me.
>>> ???? >>
>>> ???? >> (1:10)[-0]
>>> ???? >> #integer(0)
>>> ???? >>
>>> ???? >> (1:10)[-seq_len(0)]
>>> ???? >> #integer(0)
>>> ???? >>
>>> ???? >>
>>> ???? >> It was the last example that made me ask, seq_len(0) whould 
>>> avoid an
>>> ???? >> if/else or something similar.
>>> ???? >
>>> ???? > I think it's ok, because there is no negative zero integer, so -0
>>> ??? is 0.
>>>
>>> ??? Ok, this makes sense, I should have thought about that.
>>>
>>> ???? >
>>> ???? > 1.0/-0L # Inf
>>> ???? > 1.0/-0.0 # - Inf
>>> ???? >
>>> ???? > And the same can be said for integer(0), which is the result of
>>> ???? > seq_len(0): there is no negative empty integer.
>>>
>>> ??? I'm not completely convinced about this one, though.
>>> ??? I would expect -seq_len(n) to remove the first n elements from the
>>> ??? vector, therefore, when n == 0, it would remove none.
>>>
>>> ??? And integer(0) is not the same as 0.
>>>
>>> ??? (1:10)[-0] == (1:10)[0] == integer(0) # empty
>>>
>>> ??? (1:10)[-seq_len(0)] == (1:10)[-integer(0)]
>>>
>>>
>>> ??? And I have just reminded myself to run
>>>
>>> ??? identical(-integer(0), integer(0))
>>>
>>> ??? It returns TRUE so my intuition is wrong, R is right.
>>> ??? End of story.
>>>
>>> ??? Thanks for the help,
>>>
>>> ??? Rui Barradas
>>>
>>> ???? >
>>> ???? > I?aki
>>> ???? >
>>> ???? >>
>>> ???? >>
>>> ???? >> Thanks in advance,
>>> ???? >>
>>> ???? >> Rui Barradas
>>> ???? >>
>>> ???? >> ______________________________________________
>>> ???? >> R-devel at r-project.org <mailto:R-devel at r-project.org> mailing 
>>> list
>>> ???? >> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>> ??? ______________________________________________
>>> ??? R-devel at r-project.org <mailto:R-devel at r-project.org> mailing list
>>> ??? https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>



[Rd] Is this a bug in `[`?
Rui Barradas