>>>>> Travis McArthur <travis.d.mcart...@gmail.com> >>>>> on Sat, 16 Jul 2016 14:40:28 -0500 writes:
> Hi, > I have discovered that sample() fails with an uninformative error > message when the x argument is a single NA of type double or integer. > I can reproduce the problem with the following code: > base::sample(NA) > # NA is of logical type above > base::sample(NA_character_) > base::sample(NA_complex_) > base::sample(NA_real_) > base::sample(NA_integer_) > The last two lines throw the following error: > Error in if (length(x) == 1L && is.numeric(x) && x >= 1) { : > missing value where TRUE/FALSE needed Good catch, thank you, Travis! The error message --- not quite uninformative I would argue --- actually even suggests a fix -- which I have already committed to the R sources: Replace is.numeric() by is.finite(). However, that is not good enough: With that change, sample(1i) fails. So, in a better patch, the line in case if (length(x) == 1L && is.numeric(x) && x >= 1) { could be replaced by if (length(x) == 1L && is.numeric(x) && is.finite(x) && x >= 1) { or if (length(x) == 1L && is.numeric(x) && !is.na(x) && x >= 1) { or does anyone see a nicer / more performant efficient solution? Martin [............] > Best, > Travis McArthur ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel