> -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Gabor > Grothendieck > Sent: Friday, September 17, 2004 12:52 PM > To: [EMAIL PROTECTED] > 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 > ______________________________________________ > [EMAIL PROTECTED] mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel