[R] Order with scientific notation

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Aug 26 08:03:14 CEST 2004

```Your column of P.values is not numeric.  If it were, it would be left
justified and not printed with trailing zeroes suppressed. As in

> (X <- data.frame(P.values=c(0.0379, 0.068, 0.0025, 8e-04)))
P.values
1   0.0379
2   0.0680
3   0.0025
4   0.0008

So I guess it is factor or character, as in

> X\$P.values <- as.character(X\$P.values)
> X
P.values
1   0.0379
2    0.068
3   0.0025
4    8e-04

> sort(X\$P.values)
[1] "0.0025" "0.0379" "0.068"  "8e-04"

str() is usually your friend in problems like this.

On Thu, 26 Aug 2004, Kevin Wang wrote:

> Hi,
>
> If a value like 8e-04 is in a data frame, is the following behaviour normal?
>
>    > final.df
>       Chr P.values
>    1    1   0.0379
>    2    6    0.068
>    3    2   0.0025
>    4   13    8e-04
>    5   14   0.0244
>    6    3   0.0279
>    7    4   0.1561
>    8    5   0.9261
>    9    7   0.0011
>    10   9   0.5125
>    11  10   0.2196
>    12  11   0.6457
>    13  18   0.9272
>
>    > final.sorted <- data.frame(final.df[order(final.df\$P.values), ],
>    +                            row.names = 1:13)
>    > final.sorted
>       Chr P.values
>    1    7   0.0011
>    2    2   0.0025
>    3   14   0.0244
>    4    3   0.0279
>    5    1   0.0379
>    6    6    0.068
>    7    4   0.1561
>    8   10   0.2196
>    9    9   0.5125
>    10  11   0.6457
>    11   5   0.9261
>    12  18   0.9272
>    13  13    8e-04
>
> I'd think 8e-04 should be the smallest value...?  It's R 1.9.1 on
> Windows XP if that helps.
>
> Cheers,
>
> Kevin
>
>

--
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

```