我刚刚开始使用管道如何让ifelse()
使用管道
下面是一个可以工作的示例代码
x <- sample(-5:5,10,replace = T)
x
[1] 0 0 2 -1 1 3 1 3 4 -2
ifelse( sign(x) >= 0,1,-1)
[1] 1 1 1 -1 1 1 1 1 1 -1
下面是我用管子做的不成功的尝试
x |> sign() |> ifelse(. >= 0, 1, -1)
Error in ifelse(sign(x), . >= 0, 1, -1) : unused argument (-1)
2条答案
按热度按时间wxclj1h51#
你可以使用花括号和函数
\(.)
来管道一个向量,如下所示:在使用RHS管道时,请确保在函数后面添加
()
,否则它会返回如下错误:创建于2023-06-07,使用reprex v2.0.2
bz4sfanl2#
请注意,
sign
不会改变输入和0之间的关系,因此删除它。现在(1)将>=
放入一个单独的分支中,或者(2)创建一个列表,其中x
作为其一个元素,后跟with
,或者(3)做同样的事情,但使用算术表达式代替ifelse
,或者(4)创建一个使用ifelse
的函数。另一种可能性是使用magrittr管道,在这种情况下,我们可以这样写: