Skip to content

subsetting a dataframe

5 messages · Chris Handorf, Douglas Grove, John Fox +2 more

#
How does one remove a column from a data frame when the name of
the column to remove is stored in a variable?

For Example:

colname <- "LOT"

newdf <- subset(olddf,select = - colname)

The above statement will give an error, but thats what I'm trying to 
accomplish.

If I had used:

newdf <- subset(olddf,select = - LOT)

then it would have worked, but as I said the column name is stored in a 
variable
so I can't just enter it explicity.

Thanks.
#
This is how I do it.  There are variations on this
and I'm sure totally different ways as well.

newdf <- newdf[, names(newdf) != colname]


If 'colnames' is a vector (i.e. if you have multiple columns
to delete) then do:


newdf <- newdf[, !(names(newdf) %in% colname)]

This command will work even if 'colname' is not a vector


Doug
#
Dear Chris,

The following should work for you:

         olddf[[colname]] <- NULL

I hope this helps,
  John
At 11:28 AM 4/7/2003 -0700, Chris Handorf wrote:
____________________________
John Fox
Department of Sociology
McMaster University
email: jfox at mcmaster.ca
web: http://www.socsci.mcmaster.ca/jfox
#
Chris Handorf wrote:
What about
 subset(olddf, select= -get(colname))
or
 olddf[, names(olddf) != colname]

Uwe Ligges
#
> df1 <- data.frame(a=1, b=2, c=3)
 > df1[,!is.element(names(df1), "b")]
   a c
1 1 3

Spencer Graves
Chris Handorf wrote: