RE: [Rd] Function some()

From: John Fox <jfox_at_mcmaster.ca>
Date: Sat 18 Sep 2004 - 04:13:36 EST

 

> -----Original Message-----
> From: r-devel-bounces@stat.math.ethz.ch
> [mailto:r-devel-bounces@stat.math.ethz.ch] On Behalf Of Gabor
> Grothendieck
> Sent: Friday, September 17, 2004 12:52 PM
> To: r-devel@stat.math.ethz.ch
> Subject: Re: [Rd] Function some()
>
> John Fox <jfox <at> mcmaster.ca> writes:
. . .
>
>
> Its cute but you could do it on vectors and data frames with
> 2 function calls. First get some test data:
>
> data(iris)
> data(state)
>
> # Now we have:
>
> head(sample(iris)) # data frame
> head(sample(data.frame(state.x77))) # matrix
> head(sample(letters)) # vector
>

A possible disadvantage of this approach is that it permutes the entire, potentially large, object before picking the presumably small sample.

> The only nuisance is that sample samples from the elements of
> matrices rather than from their rows thereby necessitating
> the conversion in the middle call to head(sample(...)).
>
> Perhaps an alternate suggestion would be to modify sample so
> it becomes an S3 generic with methods for matrices and data
> frames such that sample.matrix samples from the rows of a
> matrix and sample.data.frame samples from the rows of a
> data.frame. Then (1) the above idiom becomes consistent
> across the above mentioned classes. (2) This would also
> avoid burdening the base with an extra function and would (3)
> provide for the possibility of extending sample to other classes.
>

This occurred to me, too [as did providing a random argument to head()], but seemed a more radical proposal than introducing a simple new generic.

Regards,
 John

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



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Sat Sep 18 04:17:09 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:00:21 EST