From jfox at mcmaster.ca  Fri Sep 17 20:13:36 2004
From: jfox at mcmaster.ca (John Fox)
Date: Fri Sep 17 20:13:39 2004
Subject: [Rd] Function some()
In-Reply-To: <loom.20040917T192748-719@post.gmane.org>
Message-ID: <20040917181335.BFBQ4758.tomts13-srv.bellnexxia.net@JohnDesktop8300>

 

> -----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


[Rd] Function some()
John Fox