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-requ...@r-project.org:
Date: Fri, 15 Mar 2013 12:47:01 -0500
From: Terry Therneau<thern...@mayo.edu>
To:"r-devel@r-project.org"  <r-devel@r-project.org>
Subject: [Rd] numerics from a factor
Message-ID:<51435e95....@mayo.edu>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

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

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to