Skip to content

numerics from a factor

3 messages · Ulrike Grömping, Martin Maechler, Terry Therneau

#
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


Am 16.03.2013 12:00, schrieb r-devel-request at r-project.org:
3 days later
#
> 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
#
Thanks Martin.  I had already changed the second argument to getOption.

By the way, per an off list comment from Brian R the bug I was addressing won't affect 
anyone using R as shipped; the default decimal separator is "." whatever the region.  It 
only bit those who set the OutDec option themselves.

Terry T.
On 03/19/2013 11:30 AM, Martin Maechler wrote: