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

如何在R语言中通过管道%>%调用which()函数?

用管道符%>%实现which(test == 0)的正确写法

首先定义向量:

test <- c(1,2,0,5,0)

原生写法which(test == 0)可得到结果[1] 3 5,但你尝试的三种管道写法均报错——原因是管道符默认会把左侧对象作为右侧函数的第一个参数传入,而which(. == 0)这类写法会被解析为把test传给which的第一个参数,同时将. ==0当作第二个参数(但which的第二个参数是arr.ind,要求为布尔值,类型不匹配),因此触发错误。

以下是几种正确的管道实现方式:

  • 使用大括号包裹表达式,改变管道默认的参数传递逻辑:

    test %>% {which(. == 0)}
    

    大括号内的代码会将.视为管道传入的test向量,直接执行which(. == 0),和原生写法逻辑完全一致。

  • 拆分步骤,先生成逻辑向量再传入which:

    test %>% {. == 0} %>% which()
    

    第一步对test做等于0的判断得到逻辑向量,再将该向量传给which函数。

  • 简洁链式写法(兼容base管道与magrittr管道):

    test %>% equals(0) %>% which()
    

    这里equals(0)等价于. == 0,更贴合管道的链式调用风格。

内容的提问来源于stack exchange,提问作者braun_tube

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:52:07