On 08-May-11 09:18:55, Berwin A Turlach wrote: > G'day Dan, > > On Sun, 8 May 2011 05:06:27 -0400 > Dan Abner <dan.abne...@gmail.com> wrote: > >> Hello everyone, >> I am attempting to use the %in% operator with the ! to produce >> a NOT IN type of operation. Why does this not work? Suggestions? >> >> > data2[data1$char1 %in% c("string1","string2"),1]<-min(data1$x1) >> > data2[data1$char1 ! %in% >> > c("string1","string2"),1]<-max(data1$x1)+1000 >> >> Error: unexpected '!' in "data2[data1$char1 !" > > Try (untested) > > R> data2[!(data1$char1 %in% > c("string1","string2")),1]<-max(data1$x1)+1000 > > HTH. > Cheers, > Berwin
Berwin's suggestion should work -- it is the general way to negate the result of an "%in". As to "Why does this not work?", the point to note is that "%in%" is a binary operator. If you enter ?"%in%" you will be taken to the help page for "match", where it is pointed out that: ?%in%? is a more intuitive interface as a binary operator, which returns a logical vector indicating if there is a match or not for its left operand. Specifically, therefore, the syntax of "%in%" requires X %in% Y where X and Y are objects to which the functional definition of %in% applies (see the same help page): '%in%' is currently defined as '"%in%" <- function(x, table) match(x, table, nomatch = 0) > 0' In your expression (effectively "X ! %in% Y") the item which immediately precedes "%in%" is the "!", and this is not a valid item! Based on the above functional definition, you could define your own binary operator "%!in%" as "%!in%" <- function(x,table) match(x,table, nomatch = 0) == 0 or similar -- I have not tested this so cannot guarantee it! However, it is the way to proceed if you want a "NOT IN". Then the usage could be: data2[data1$char1 %!in% c("string1","string2"),1]<-max(data1$x1)+1000 Hoping ths helps, Ted. -------------------------------------------------------------------- E-Mail: (Ted Harding) <ted.hard...@wlandres.net> Fax-to-email: +44 (0)870 094 0861 Date: 08-May-11 Time: 10:35:05 ------------------------------ XFMail ------------------------------ ______________________________________________ R-help@r-project.org 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.