Skip to content

Remove columns from data-frame

2 messages · Maciej Bliziński, Dimitris Rizopoulos

#
Hello,

I'm new to the list, hello everybody! :-)


I have a question. I looked carefully through the documentation and
googled, and found no answer, so I'm posting it here.

Let's say I have a data frame with lots of columns (about 300), which
are factors.  Many columns-factors have only one level, for example all
are "Yes" or all are "No". 

If I try to do a regression with that, I get an error message, that
contrasts can be used only when number of factors is at least 2.
Error in "contrasts<-"(`*tmp*`, value = "contr.treatment") :
        contrasts can be applied only to factors with 2 or more levels


Of course, I could not include them in the model formula, but I don't
feel like typing 150 descriptive variables.

I would like to remove the one-level columns autimatically from the data
frame. Is it possible?

Regards,
Maciej
#
try this:

dat <- data.frame(y=rnorm(100), f1=sample(c("Yes", "No"), 100, TRUE), 
f2=rep("Yes", 100), f3=rep("No", 100))
#############
dat[!sapply(dat, function(x) all(x==x[1]))]

I hope it helps.

Best,
Dimitris

----
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven

Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/16/336899
Fax: +32/16/337015
Web: http://www.med.kuleuven.ac.be/biostat/
     http://www.student.kuleuven.ac.be/~m0390867/dimitris.htm

----- Original Message ----- 
From: "Maciej Blizi?ski" <m.blizinski at wsisiz.edu.pl>
To: <r-help at stat.math.ethz.ch>
Sent: Monday, March 21, 2005 11:12 AM
Subject: [R] Remove columns from data-frame