如何使用带有管道的which()函数%>%

问题描述 投票:0回答:2
test <- c(1,2,0,5,0)

which(test == 0)

test %>% which(.==0)
test %>% which(,==0)
test %>% which( ==0)

我正在尝试弄清楚如何将向量通过管道传输到which()函数中。使用which(test == 0)给了我想要的结果,但是在最后三行使用管道都会给我错误。如何使用管道获得与 which(test == 0) 相同的结果?

r dplyr
2个回答
1
投票

您有 2 个功能,

which
==
。但是像
+
*
==
这样的二元运算符函数通过管道输入没有多大意义。

> (test == 0) |> which()
[1] 3 5
> (test == 0) %>% which()
[1] 3 5

您可以使用普通函数表示法而不是二元运算符的中缀表示法

test == 0
来编写
"=="(test, 0)
,并且使用该语法您可以将其全部通过管道传输,但这对我来说会降低可读性:

test %>% `==`(0) %>% which()
[1] 3 5

0
投票

使用 {...} 来防止点插入到

which
:

test %>% { which(. == 0) }
## [1] 3 5
© www.soinside.com 2019 - 2024. All rights reserved.