[R-es] extraño error con seq

Francisco Rodriguez Sanchez
Tue, 02 Jun 2015 16:04:52 -0000

Estimado Jorge,

Muchas gracias por tu respuesta, me ha sido muy útil.

Al final he evitado el error con este pequeño truco:

>seq(from = round(2.2 + 0.1, digits = 1), to = 2.3, by = 0.1)
[1] 2.3

Saludos,

Paco




El 01/06/2015 a las 17:56, Jorge I Velez escribió:
> Francisco,
> Tiene que ver con aritmetica de punto flotante y como los numeros se
> representan en R. En la FAQ 7.31 esta explicado.
> Espero sea de utilidad.
> Jorge.-
>
> On Tuesday, June 2, 2015, Francisco Rodriguez Sanchez
> <f.rodriguez.sanc en gmail.com <mailto:f.rodriguez.sanc en
gmail.com>> wrote:
>
>     Estimados colisteros,
>
>     Acabo de encontrar un extraño error usando la función seq:
>
>     >seq(from = 0.6 + 0.1, to = 0.7, by = 0.1)
>     [1] 0.7
>     # todo bien
>
>     >seq(from = 2.2 + 0.1, to = 2.3, by = 0.1)
>     Error in seq.default(from = 2.2 + 0.1, to = 2.3, by = 0.1) :
>        wrong sign in 'by' argument
>
>
>     La ayuda de seq establece que "Specifying to - from and by of
>     opposite signs is an error". Y en efecto:
>
>     >2.3 - (2.2 + 0.1)
>     [1] -4.440892e-16
>
>     arroja un resultado muy pequeño pero negativo, mientras que
'by'
>     es positivo (0.1).
>
>     He probado con otros muchos números y esto solo me ocurre con el
>     caso de 2.2 y 2.3. Por ejemplo:
>
>     >0.7 - (0.6 + 0.1)
>     [1] 0
>
>
>     A qué se debe esto? O más importante, cómo puedo evitar este error?
>
>     Muchas gracias de antemano
>
>     Paco
>
>     --
>     Dr Francisco Rodriguez-Sanchez
>     Integrative Ecology Group
>     Estacion Biologica de Doñana - CSIC
>     Avda. Americo Vespucio s/n
>     41092 Sevilla (Spain)
>     http://bit.ly/frod_san
>
>
>             [[alternative HTML version deleted]]
>
>     _______________________________________________
>     R-help-es mailing list
>     R-help-es en r-project.org <javascript:;>
>     https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
> --
> Sent from my phone. Please excuse my brevity and misspelling.

--
Dr Francisco Rodriguez-Sanchez
Integrative Ecology Group
Estacion Biologica de Doñana - CSIC
Avda. Americo Vespucio s/n
41092 Sevilla (Spain)