On Fri, 2008-10-03 at 15:27 -0400, Lo, Ken wrote: > Hi all, > > I am running into a snag using quantile function in stats. Basically, I > don't understand why the loop below throws the error that it does. > > test.data <- rnorm(1000, 0, 1) > > for (i in seq(0.00001, 0.001, 0.00001)){ > test <- quantile(test.data, probs=seq(0,1,i)); > print(i); > } > > It runs fine from 1e-05 to 0.00024, but then throws the error > > Error in quantile.default(test.data, probs=seq(0,1,i)): > 'probs' outside [0,1]
Perhaps this helps: Run your loop > tmp <- seq(0, 1, i) > tmp[length(tmp)] [1] 1 > tmp[1] == 0 [1] TRUE > tmp[length(tmp)] == 1 [1] FALSE > tmp[length(tmp)] > 1 [1] TRUE So in this sequence, the "1" isn't represented exactly as 1 in the computer, it is a little bit bigger than 1, and hence the error. The reason the below examples work is that when the loop stops, i is not exactly equal to 0.00025 > i == 0.00025 [1] FALSE And when using 0.00025 explicitly, the probs are all within 0,1. These issues are covered in the R FAQ, 7.31: http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f If this is just a toy example for a proper application, you have to generate the sequence outside of the call to quantile and insure that any values outside 0,1 are set back to 0,1. For example, this loop now completes the task you tried to achieve, modified a bit to do pre-allocation of storage and save all sets of quantiles: test.data <- rnorm(1000, 0, 1) seqs <- seq(0.00001, 0.001, 0.00001) test <- vector(mode = "list", length = length(seqs)) for (i in seq_along(seqs)){ tmp <- seq(0, 1, seqs[i]) tmp[tmp < 0] <- 0 tmp[tmp > 1] <- 1 test[[i]] <- quantile(test.data, probs=tmp) } G Ps: This is R, not C. The ";" are not required > > I tested it some more by using > > test <- quantile(test.data, probs=seq(0,1,0.00024)); > test <- quantile(test.data, probs=seq(0,1,0.00025)); > > both ran fine. So, I'm baffled as to what the error actually is. > > My sessionInfo() is: > > R version 2.7.1 (2008-06-23) > i386-pc-mingw32 > > Locale: > LC_COLLATE=English_United States.1252....... > > Attached base packages: > [1] stats graphics grDevice utils datasets methods base > > > Any assistance would be much appreciated. > > Best, > > Ken Lo > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. -- %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% Dr. Gavin Simpson [t] +44 (0)20 7679 0522 ECRC, UCL Geography, [f] +44 (0)20 7679 0565 Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/ UK. WC1E 6BT. [w] http://www.freshwaters.org.uk %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
signature.asc
Description: This is a digitally signed message part
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.