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)
>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:
[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
--
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]]