Sunday 24 December 2017

r - Drop data frame columns by name

itemprop="text">


I have a number of columns
that I would like to remove from a data frame. I know that we can delete them
individually using something
like:



df$x <-
NULL


But I was hoping
to do this with fewer commands.



Also, I know
that I could drop columns using integer indexing like
this:




df <- df[
-c(1, 3:6, 12) ]


But I
am concerned that the relative position of my variables may
change.



Given how powerful R is, I figured there
might be a better way than dropping each column one by one.



Answer




You can use a simple list of names
:



DF <-
data.frame(

x=1:10,
y=10:1,

z=rep(5,10),
a=11:20
)
drops <-
c("x","z")
DF[ , !(names(DF) %in%
drops)]


Or,
alternatively, you can make a list of those to keep and refer to them by name
:




keeps <- c("y",
"a")
DF[keeps]


EDIT
:
For those still not acquainted with the drop
argument of the indexing function, if you want to keep one column as a data frame, you
do:



keeps <- "y"
DF[
, keeps, drop =
FALSE]



drop=TRUE
(or not mentioning it) will drop unnecessary dimensions, and hence return a vector with
the values of column y.



No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...