Skip to content

[R-es] extraño error con seq

4 messages · Jorge I Velez, Francisco Rodriguez Sanchez, Carlos J. Gil Bellosta

#
Estimados colisteros,

Acabo de encontrar un extraño error usando la función seq:
[1] 0.7
# todo bien
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:
[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:
[1] 0


A qué se debe esto? O más importante, cómo puedo evitar este error?

Muchas gracias de antemano

Paco
#
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> wrote:

            

  
    
1 day later
#
Estimado Jorge,

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

Al final he evitado el error con este pequeño truco:
[1] 2.3

Saludos,

Paco




El 01/06/2015 a las 17:56, Jorge I Velez escribió:

  
    
#
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ó: