Survfit had a bug in some prior releases due to the use of both unique(times) and table(times); I fixed it by rounding to 15 digits per the manual page for as.character. Yes, I should ferret out all the usages instead, but this was fast and it cured the user's problem. The bug is back! A data set from a local colleage triggers it. I can send the rda file to anyone who wishes. The current code has digits <- floor((.Machine$double.digits) * logb(.Machine$double.base,10)) #base 10 digits Y[,1] <- signif(Y[,1], digits) which gives 15 digits; should I subtract one more? Should the documentation change? In the meantime I'm looking at the more permanent fix of turning time into a factor, then back at the very end. Because it is a bigger change the potential for breakage is higer, however. Terry T. tmt45% R --vanilla R version 2.12.2 (2011-02-25) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-unknown-linux-gnu (64-bit)> load('test.rda') > ls()[1] "temp2"> temp2 <- round(temp2, 15) > length(unique(temp2))[1] 954> length(table(temp2))[1] 942> .Machine$double.eps[1] 2.220446e-16> range(temp2)[1] 0.0000 26.0397 Terry T.
On Mon, Mar 21, 2011 at 10:46:41AM -0500, Terry Therneau wrote:> Survfit had a bug in some prior releases due to the use of both > unique(times) and table(times); I fixed it by rounding to 15 digits per > the manual page for as.character. Yes, I should ferret out all the > usages instead, but this was fast and it cured the user's problem. > The bug is back! A data set from a local colleage triggers it. > I can send the rda file to anyone who wishes. > > The current code has > digits <- floor((.Machine$double.digits) * > logb(.Machine$double.base,10)) #base 10 digits > Y[,1] <- signif(Y[,1], digits) > > which gives 15 digits; should I subtract one more? > > Should the documentation change? > > In the meantime I'm looking at the more permanent fix of turning time > into a factor, then back at the very end. Because it is a bigger change > the potential for breakage is higer, however.Can you describe the error in more detail? Is it related to consistency of converting a number to character and back? Petr Savicky.