Is this a bug in `[`?
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
Patrick Burns pburns at pburns.seanet.com twitter: @burnsstat @portfolioprobe http://www.portfolioprobe.com/blog http://www.burns-stat.com (home of: 'Impatient R' 'The R Inferno' 'Tao Te Programming')