You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 08:27:04