如何在base R管道中对逻辑值取反?
Base R原生管道里用
!取反的解决办法 在base R里用原生管道|>直接写TRUE |> !()会报错,运行代码:
TRUE |> `!`()
得到的错误提示是:
Error in !NULL : function '!' not supported in RHS call of a pipe (<input>:1:9)
这是因为base R的管道要求右侧是标准函数调用,而!是运算符,没法直接这么用。虽然magrittr包里有not()别名可以解决,但base R本身没这个函数,给你几个base R里能用的方案:
- 用匿名函数包裹取反操作
# 两种写法都可以 TRUE |> (\(x) !x)() TRUE |> {x) !x}()
- 自己定义一个
not函数,用法和magrittr的一致
not <- function(x) !x TRUE |> not()
如果你已经在用tidyverse工具包,也可以用purrr::negate:
library(purrr) TRUE |> negate(identity)()
内容的提问来源于stack exchange,提问作者ekatko1
相关产品推荐
相关产品推荐

