Yes. I do this periodically: dat.new <- dat[1:6, ] dat.new[] <- lapply(dat.new, function(x) if(is.factor(x)) factor(x) else x)
HTH, --sundar Afshartous, David said the following on 9/12/2006 11:00 AM: > thanks to all for the quick replies! > > if the factor is part of a dataframe, I can apply the subsetting > to the entire dataframe, and then use drop=True to the factor > separately and then put it back into the new dataframe (code below). is > there a way > to do this in a single step? > > dat <-data.frame(fact = as.factor(c(rep("A", 3),rep("B", 3), rep("C", 3))),Y > = rnorm(9)) > dat.new = dat[1:6, ] > dat.new$fact = dat$fact[1:6, drop = T] > > > > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Peter Dalgaard > Sent: Tuesday, September 12, 2006 11:45 AM > To: Afshartous, David > Cc: r-help@stat.math.ethz.ch > Subject: Re: [R] levels of factor when subsetting the factor > > "Afshartous, David" <[EMAIL PROTECTED]> writes: > >> >> All, >> >> When I take a subset of a factor the reduced factor still maintains >> all the original levels of the factor when say forming the key in a plot. >> The data is correct, but the variable still "remembers" the original >> levels. See below for reproducible code. Does anyone know how to fix >> this? >> cheers, >> dave >> >> fact = as.factor(c(rep("A", 3),rep("B", 3), rep("C", 3))) new.fact = >> fact[1:6] >>> new.fact >> [1] A A A B B B >> Levels: A B C ## should only show A B > > Just use > >> factor(new.fact) > [1] A A A B B B > Levels: A B > > or > >> fact[1:6, drop=T] > [1] A A A B B B > Levels: A B > > > And, no, it is not a bug. The fact that a subsample happens to consist only > of males does not turn gender into a one-level factor... (Apart from the > philosophy, it makes a real difference in tabulation.) > > ______________________________________________ R-help@stat.math.ethz.ch 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.