Re: [Rd] PR#6614

From: Bill Dunlap <bill_at_insightful.com>
Date: Mon 27 Feb 2006 - 17:57:57 GMT

On Wed, 23 Feb 2006, Peter Dalgaard wrote:

> "Gabor Grothendieck" <ggrothendieck@gmail.com> writes:
>
> > Try this:
> >
> > subset(iris, select = - Species)
>
> Or, canonically,
>
> nm <- names(iris)
> iris[, nm != "Species" ]
>
> iris[, -match("Species", nm)]
>
> >
> > On 2/22/06, davidhughjones@gmail.com <davidhughjones@gmail.com> wrote:
> > > I agree with the submitter that this needs some kind of solution.
> > > Although data.frame[,-12] works, how do I drop a named column (the
> > > most common use case)? (I found this bug while searching for an
> > > answer.)

That code with match only works if "Species" is actually a column of iris. If not, your result depends on whether you have a data.frame (an error) or a matrix (a column of NA's).

I found some mail in a 15 year old sent-mail file that suggested allowing the tag 'except=' on any of the arguments to "[" to replace/extend the limited negative integer convention. The idea was that

    iris[ except=c(10:20), except=c("Petal.Width","Petal.Length")) ] would return all rows except 10:20 and all columns except the ones named.

    iris[ except=integer(0), ]
would return all rows of iris, while iris[-integer(0), ] returns no rows of iris.

This abuses the tag= notation, but the "[" function doesn't really support the i= and j= tags that some people expect.

This would take care of the problem that subset(data.frame,select=-name) only lets you omit columns.

The mail had a version of [.data.frame (for Splus 2.1?) that implemented this, although, if it is to be used it should be implemented in the most primitive [ code so all methods use it.



Bill Dunlap
Insightful Corporation
bill at insightful dot com
360-428-8146

 "All statements in this message represent the opinions of the author and do  not necessarily reflect Insightful Corporation policy or position."



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Feb 28 05:11:25 2006

This archive was generated by hypermail 2.1.8 : Mon 27 Feb 2006 - 22:16:07 GMT