Given an arbitrary data frame, it is easy to exclude a column given its index: df[,-2]. How to do the same thing given the column name? A naive attempt df[,-"name"] did not work :)
How to exclude a column by name?
9 messages · Paul Hiemstra, Linlin Yan, Zeljko Vrba +5 more
Zeljko Vrba wrote:
Given an arbitrary data frame, it is easy to exclude a column given its index: df[,-2]. How to do the same thing given the column name? A naive attempt df[,-"name"] did not work :)
______________________________________________ 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.
Hi, This piece of code does the trick. Most important is the which() command: df = data.frame(a = runif(10), b = runif(10)) df[,-which(names(df) == "a")] cheers, Paul
Drs. Paul Hiemstra Department of Physical Geography Faculty of Geosciences University of Utrecht Heidelberglaan 2 P.O. Box 80.115 3508 TC Utrecht Phone: +3130 274 3113 Mon-Tue Phone: +3130 253 5773 Wed-Fri http://intamap.geo.uu.nl/~paul
Hope this helps:
df <- data.frame(matrix(1:10,2)) df
X1 X2 X3 X4 X5 1 1 3 5 7 9 2 2 4 6 8 10
df[,-2]
X1 X3 X4 X5 1 1 5 7 9 2 2 6 8 10
df[,-which(names(df)=="X2")]
X1 X3 X4 X5 1 1 5 7 9 2 2 6 8 10
On Wed, May 27, 2009 at 6:37 PM, Zeljko Vrba <zvrba at ifi.uio.no> wrote:
Given an arbitrary data frame, it is easy to exclude a column given its index: df[,-2]. ?How to do the same thing given the column name? ?A naive attempt df[,-"name"] did not work :)
On Wed, May 27, 2009 at 12:52:41PM +0200, Paul Hiemstra wrote:
This piece of code does the trick. Most important is the which() command: df = data.frame(a = runif(10), b = runif(10)) df[,-which(names(df) == "a")]
Thanks to you and Linlin. It did not occur to me to use which(); I thought that there would be a shorter way to accomplish this since names are first-class indices for data frames and arrays. (Or are they? What happens under the hood when I write df[,"a"]?)
Paul Hiemstra wrote:
Zeljko Vrba wrote:
Given an arbitrary data frame, it is easy to exclude a column given its index: df[,-2]. How to do the same thing given the column name? A naive attempt df[,-"name"] did not work :)
______________________________________________ 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.
Hi, This piece of code does the trick. Most important is the which() command: df = data.frame(a = runif(10), b = runif(10)) df[,-which(names(df) == "a")]
You don't actually need which() (and the approach runs into problems if "a" isn't there). Just select the others: df[, names(df) != "a"] Or, BTW, you can use within() aq <- within(airquality, rm(Day))
O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090527/d9f4c4e0/attachment-0001.pl>
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090527/0c9cba3f/attachment-0001.pl>
Peter Dalgaard <P.Dalgaard <at> biostat.ku.dk> writes:
Or, BTW, you can use within() aq <- within(airquality, rm(Day))
Please add this as an example to the docs of within. Dieter
Dieter Menne wrote:
Peter Dalgaard <P.Dalgaard <at> biostat.ku.dk> writes:
Or, BTW, you can use within()
aq <- within(airquality, rm(Day))
Please add this as an example to the docs of within.
possibly with the slightly more generic
unwanted <- 'Day'
aq <- within(airquality, rm(list=unwanted))
vQ