Negate a predicate function.

negate(.p)

Arguments

.p

A single predicate function, a formula describing such a predicate function, or a logical vector of the same length as .x. Alternatively, if the elements of .x are themselves lists of objects, a string indicating the name of a logical element in the inner lists. Only those elements where .p evaluates to TRUE will be modified.

Value

A new predicate function.

Examples

negate("x")
#> <composed> #> 1. function (x, ...) #> pluck(x, "x", .default = NULL) #> <environment: 0x224f340> #> #> 2. function (.x) #> !.x #> <bytecode: 0x692e318> #> <environment: 0x2d6c698>
negate(is.null)
#> <composed> #> 1. function (x) #> .Primitive("is.null")(x) #> #> 2. function (.x) #> !.x #> <bytecode: 0x692e318> #> <environment: 0x2e4aed0>
negate(~ .x > 0)
#> <composed> #> 1. <lambda> #> function (..., .x = ..1, .y = ..2, . = ..1) #> .x > 0 #> <environment: 0x244fe90> #> attr(,"class") #> [1] "rlang_lambda_function" "function" #> #> 2. function (.x) #> !.x #> <bytecode: 0x692e318> #> <environment: 0x27f5fd8>
x <- transpose(list(x = 1:10, y = rbernoulli(10))) x %>% keep("y") %>% length()
#> [1] 5
x %>% keep(negate("y")) %>% length()
#> [1] 5
# Same as x %>% discard("y") %>% length()
#> [1] 5