Re: [Rd] sample suggestion

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Thu 07 Oct 2004 - 20:45:43 EST

On Thu, 7 Oct 2004 09:00:01 +0200, gb@stat.umu.se (Göran Broström) wrote:

>I have been bitten by what is clearly described on the help page for
>'sample', namely sampling from a population of size one. I agree that it is
>convenient to have an exception if 'length(x) == 1', but my suggestion is
>to enforce the exception only if 'x' is numeric. In any case, if x is not
>numeric and of length 1, all you get is an error message.
>
>I would like 'sample("tre", 1)' to return "tre", and 'sample(3, 1)' to
>return a natural number less than 4. It seems easy to achieve that by
>changing the line
>
>if (length(x) == 1 && x >= 1) {
>
>to
>
>if (length(x) == 1 && is.numeric(x) && x >= 1) {
>
>in 'sample'.
>
>Isn't that a good idea? An alternative suggestion would be to implement
>'resample' (from the examples) in 'base'.

I agree that's a good suggestion; I think it would be even better to add an extra argument to sample to say how to handle a length 1 population vector, e.g.

sample(x, size, replace = FALSE, prob = NULL, expand = is.numeric(x))

 ...

if (length(x) == 1 && expand && x >= 1) {

so that the resample() example would be simply

sample(x[x > 9], expand = FALSE)

The case of zero-length x would still need to be handled separately, or generate an error.

Duncan Murdoch



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Thu Oct 07 20:50:10 2004

This archive was generated by hypermail 2.1.8 : Wed 03 Nov 2004 - 22:45:20 EST