[R-es] extraño error con seq

Carlos J. Gil Bellosta cgb en datanalytics.com
Mar Jun 2 18:11:02 CEST 2015


Hola, ¿qué tal?

Para evitar problemas de redondeo, suelo fabricarme los intervalos a
mano cuando son fraccionarios:

2.2 + (0:10) / 100

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com

El día 2 de junio de 2015, 18:04, Francisco Rodriguez Sanchez
<f.rodriguez.sanc en gmail.com> escribió:
> 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)
> http://bit.ly/frod_san
>
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es