[Rd] numerics from a factor

Martin Maechler maechler at stat.math.ethz.ch
Tue Mar 19 17:30:45 CET 2013


>>>>> Ulrike Grömping <groemping at bht-berlin.de>
>>>>>     on Sat, 16 Mar 2013 13:04:07 +0100 writes:

    > Hi Terry, you can use type.convert instead of as.numeric
    > for numbers with decimals:

    > type.convert(levels(factor(1:6/2)),  dec=unlist(options("OutDec")))

    > Best, Ulrike

a late and minor remark: If you use the above, a slightly more expressive
preferred way is 

  type.convert(levels(factor(1:6/2)),  dec = getOption("OutDec"))

Martin


    > Am 16.03.2013 12:00, schrieb r-devel-request at r-project.org:

   [...]

    >> A problem has been pointed out by a French user of the survival package and I'm looking
    >> for a pointer.
    >> 
    >> > options(OutDec= ",")
    >> > fit <- survfit(Surv(1:6 /2) ~ 1)
    >> > fit$time
    >> [1] NA  1 NA  2 NA  3
    >> 
    >> A year or two ago some test cases that broke survfit were presented to me. The heart of
    >> the problem was numbers that were almost identical, where table(x) and unique(x) gave
    >> different counts of distinct values.
    >> The solution was to use "ftime <- factor(time)" at the top of the code, and do all the
    >> calulations using the integer levels of the factor as the unique time points.  At the very
    >> end the numeric component "time" of the result is created using
    >> as.numeric(levels(ftime)).  It's this last line that breaks.
    >> 
    >> I could set the OutDec option within survfit and reset when I leave using on.exit.  Any
    >> other simple solutions?  Any other ways I could get caught by this issue?
    >> 
    >> Terry Therneau



More information about the R-devel mailing list