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]]
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:> 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. [[alternative HTML version deleted]]
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]]