I would have used
1) != rather than ! ... ==
2) !(names(my.df) %in% "DrHorrible") ?since that handles NA names
(possible, but not easy to get) better.
and note that
3) subset(my.df, select = -DrHorrible) works.
On Mon, 23 Feb 2009, Petr PIKAL wrote:
r-help-boun... at r-project.org napsal dne 23.02.2009 03:44:41:
I "GUESS" my.df[-"DrHorrible"] does not tell R which column "NUMBER"
like to remove.
As we know, we could use my.df[-4] and it exactly tells R which column
? Angel Buffy Firefly
1 ? ? 7 ? ? 8 ? ? ? 9
2 ? ? 8 ? ? 9 ? ? ? 9
3 ? ? 6 ? ? 4 ? ? ?10
4 ? ? 9 ? ? 9 ? ? ?10
5 ? ?10 ? ?10 ? ? ?10
It is a bit deeper than [] selection.
Error in -"DrHorrible" : invalid argument to unary operator, so the error
is within selection operator [...].
If you know the name and you do not want column with this particular name
use
my.df[,!names(my.df)==("DrHorrible")]
Date: Sun, 22 Feb 2009 14:48:10 -0800
From: tony.bre... at googlemail.com
To: r-h... at r-project.org
Subject: [R] Filtering a data frame using a string for colum header
I was just radomly playing with R and got the following error when
trying to filter a data frame using a string:
Angel <- c(7,8,6,9,10)
Buffy <- c(8,9,4,9,10)
Firefly <- c(9,9,10,10,10)
DrHorrible <- c(10,9,9,10,10)
my.df <- data.frame(Angel, Buffy, Firefly, DrHorrible)
my.df["DrHorrible"]
DrHorrible
1 10
2 9
3 9
4 10
5 10
Error in -"DrHorrible" : invalid argument to unary operator
I know how to work around this problem quite easily, I'm just curious
as to why the my.df[-"DrHorrible] statement didn't work?
R version 2.8.1 (2008-12-22)
i386-pc-mingw32
locale:
LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United
1252;LC_MONETARY=English_United Kingdom.
1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods
base