[R] omitting columns from a data frame

David Winsemius dwinsemius at comcast.net
Tue Jun 21 16:30:55 CEST 2011


On Jun 21, 2011, at 9:57 AM, Ista Zahn wrote:

> I would cation people not to use the -which strategy because entering
> a value that doesn't exist as a column name returns a zero-column
> data.frame, without so much as a warning. This can be a problem if you
> don't know if a column exists but just want to make sure it doesn't,
> or if you make a typo. Compare
>
> head(mtcars[, -which(names(mtcars) == "make.sure.to.delete")])
>
> to
>
> head(mtcars[, setdiff(names(mtcars), "make.sure.to.delete")])

Excellent point,  and also applies to  the greppish strategies.  
Although these do give the desired results:

# [which( ... != <target>)]
 > head(mtcars[, which(names(mtcars) != "make.sure.to.delete")])
                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

# Logical negation of grepl result
 > head( mtcars[ , !grepl("^make.sure.to.delete$", names(mtcars) ) ] )
                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1


>
> Best,
> Ista
>
> On Tue, Jun 21, 2011 at 12:22 AM, Joshua Wiley  
> <jwiley.psych at gmail.com> wrote:
>> On Mon, Jun 20, 2011 at 8:55 PM, Erin Hodgess <erinm.hodgess at gmail.com 
>> > wrote:
>>> Too funny!
>>>
>>> how about subset?
>>
>> Sure, that is one option.  Each of the following will also work.  The
>> ones wrapped with c() can easily omit more than one at a time.
>>
>> mtcars[, -which(names(mtcars) == "drat")]
>> mtcars[, names(mtcars) != "drat"]
>> mtcars[, !names(mtcars) %in% c("drat")]
>> mtcars[, -match(c("drat"), names(mtcars))]
>>
>>>
>>> On Mon, Jun 20, 2011 at 10:52 PM, Joshua Wiley <jwiley.psych at gmail.com 
>>> > wrote:
>>>> Hi Erin,
>>>>
>>>> See inline.
>>>>
>>>> On Mon, Jun 20, 2011 at 8:45 PM, Erin Hodgess <erinm.hodgess at gmail.com 
>>>> > wrote:
>>>>> Dear R People:
>>>>>
>>>>> I have a data frame, xm1, which has 12 rows and 4 columns.
>>>>>
>>>>> If I put is xm1[,-4], I get all rows, and columns 1 - 3, which  
>>>>> is as
>>>>> it should be.
>>>>
>>>> Okay, so you know how to use the column number to omit columns.
>>>>
>>>>>
>>>>> Now, is there a way to use the names of the columns to omit  
>>>>> them, please?
>>>>
>>>> You have all the pieces (the column names, and the knowledge that  
>>>> you
>>>> can omit columns by their index).
>>>>
>>>> Homework: find a way to return the column numbers given the  
>>>> column names (hint).
>>>>
>>>> Cheers,
>>>>
>>>> Josh
>>>>
>>>>
>>>>
>>>>>
>>>>> Thanks so much in advance!
>>>>>
>>>>> Sincerely,
>>>>> Erin
>>>>>
>>>>>
>>>>> --
>>>>> Erin Hodgess
>>>>> Associate Professor
>>>>> Department of Computer and Mathematical Sciences
>>>>> University of Houston - Downtown
>>>>> mailto: erinm.hodgess at gmail.com
>>>>>
>>>>> ______________________________________________
>>>>> R-help at r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Joshua Wiley
>>>> Ph.D. Student, Health Psychology
>>>> University of California, Los Angeles
>>>> http://www.joshuawiley.com/
>>>>
>>>
>>>
>>>
>>> --
>>> Erin Hodgess
>>> Associate Professor
>>> Department of Computer and Mathematical Sciences
>>> University of Houston - Downtown
>>> mailto: erinm.hodgess at gmail.com
>>>
>>
>>
>>
>> --
>> Joshua Wiley
>> Ph.D. Student, Health Psychology
>> University of California, Los Angeles
>> http://www.joshuawiley.com/
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
>
>
> -- 
> Ista Zahn
> Graduate student
> University of Rochester
> Department of Clinical and Social Psychology
> http://yourpsyche.org
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list