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: 0x55b5058d6228> #> #> 2. function(.x) !.x #> <bytecode: 0x55b5034c52c0> #> <environment: 0x55b5058c2fc0>
negate(is.null)
#> <composed> #> 1. function (x) #> .Primitive("is.null")(x) #> #> 2. function(.x) !.x #> <bytecode: 0x55b5034c52c0> #> <environment: 0x55b5054f7d28>
negate(~ .x > 0)
#> <composed> #> 1. <lambda> #> function (..., .x = ..1, .y = ..2, . = ..1) #> .x > 0 #> <environment: 0x55b505fd8078> #> attr(,"class") #> [1] "rlang_lambda_function" "function" #> #> 2. function(.x) !.x #> <bytecode: 0x55b5034c52c0> #> <environment: 0x55b5052ef760>
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