On Mon, 2007-03-26 at 15:43 -0400, Liaw, Andy wrote: > From: Thomas Lumley > > > > On Mon, 26 Mar 2007, Marc Schwartz wrote: > > > > > Sergio, > > > > > > Please be sure to cc: the list (ie. Reply to All) with follow up > > > questions. > > > > > > In this case, you would use %in% with a negation: > > > > > > NewDF <- subset(DF, (var1 == 0) & (var2 == 0) & (!var3 %in% 2:3)) > > > > > > > Probably a typo: should be !(var3 %in% 2:3) rather than (!var > > %in% 2:3) > > I used to think so, but found I didn't need the parens: > > R> a <- 1:3; b <- c(1, 3, 5) > R> ! a %in% b > [1] FALSE TRUE FALSE > R> ! (a %in% b) > [1] FALSE TRUE FALSE > > Andy
Thanks Andy, you beat me to it :-) Just for the explicit sake of the variation as I used in my reply above: > (!a %in% b) [1] FALSE TRUE FALSE I suspect that Thomas may be fearing the following scenario: > !a [1] FALSE FALSE FALSE > (!a) %in% b [1] FALSE FALSE FALSE If one looks at ?Syntax, the negation operator '!' is listed 5 rows after '%any%' relative to precedence of operation, so our examples above worked as documented. HTH, Marc ______________________________________________ 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.