rmatchnegation

Negation of %in% in R


Is there a short negation of %in% in R like !%in% or %!in%?


Of course I can negate c("A", "B") %in% c("B", "C") by !(c("A", "B") %in% c("B", "C")) (cf. this question) but I would prefere a more straight forward approach and save a pair of brackets (alike presumably most people would prefer c("A", "B") != c("B", "C") over !(c("A", "B") == c("B", "C"))).


Solution

  • No, there isn't a built in function to do that, but you could easily code it yourself with

    `%nin%` = Negate(`%in%`)
    

    Or

    `%!in%` = Negate(`%in%`)
    

    See this thread and followup discussion: %in% operator - NOT IN (alternatively here)


    Also, it was pointed out the package Hmisc includes the operator %nin%, so if you're using it for your applications it's already there.

    library(Hmisc)
    "A" %nin% "B"
    #[1] TRUE
    "A" %nin% "A"
    #FALSE