我可以在R中使用管道,而不是%>%

我可以在R中使用管道,而不是%>%,r,dplyr,pipe,R,Dplyr,Pipe,可能有人问过,但我找不到。在R中,我想使用|管道而不是%>% 我已经习惯了Linux,如果我能用dplyr或类似的东西做到这一点,我会很高兴 可以使用这个管道操作员吗 df | filter(state == "New York") 使用与UNIX中相同的符号可能会产生误导,因为magrittr管道并不等同于UNIX管道,但除此之外,使用内置的BOD数据帧会得到相同的结果 2为%>%定义别名 3也重新定义了内置的|它会撞击-不推荐,尽管我们试图通过在使用后移除它来限制损坏。

可能有人问过,但我找不到。在R中,我想使用|管道而不是%>%

我已经习惯了Linux,如果我能用dplyr或类似的东西做到这一点,我会很高兴

可以使用这个管道操作员吗

df | filter(state == "New York")

使用与UNIX中相同的符号可能会产生误导,因为magrittr管道并不等同于UNIX管道,但除此之外,使用内置的BOD数据帧会得到相同的结果

2为%>%定义别名

3也重新定义了内置的|它会撞击-不推荐,尽管我们试图通过在使用后移除它来限制损坏。3a是3的一个更干净的版本,它只在局部定义|,我们也可以在函数的顶部定义它,在这种情况下,它的范围将仅在函数的主体内,因此它不会对全局造成损害

4仅适用于R的开发版本。请参见?|>注意,它并不等同于magrittr的%>%,尽管它适用于magrittr管道工作的一部分情况

5是比扎罗管谷歌吧。它只需要基本的R,并且以一种巧妙的方式使用普通的R语法

library(dplyr)

# 1
BOD %>% filter(Time > 3)

# 2
`%|%` <- `%>%`
BOD %|% filter(Time > 3)

# 3 - not recommended
`|` <- `%>%`
BOD | filter(Time > 3)
rm(`|`) # remove to limit damage

# 3a - redefine | locally only
with(list(`|` = `%>%`), BOD | filter(Time > 3))

# 4 - needs development version of R
BOD |> filter(Time > 3)

# 5 - bizzaro pipe
BOD ->.; filter(., Time > 3)

使用与UNIX中相同的符号可能会产生误导,因为magrittr管道并不等同于UNIX管道,但除此之外,使用内置的BOD数据帧会得到相同的结果

2为%>%定义别名

3也重新定义了内置的|它会撞击-不推荐,尽管我们试图通过在使用后移除它来限制损坏。3a是3的一个更干净的版本,它只在局部定义|,我们也可以在函数的顶部定义它,在这种情况下,它的范围将仅在函数的主体内,因此它不会对全局造成损害

4仅适用于R的开发版本。请参见?|>注意,它并不等同于magrittr的%>%,尽管它适用于magrittr管道工作的一部分情况

5是比扎罗管谷歌吧。它只需要基本的R,并且以一种巧妙的方式使用普通的R语法

library(dplyr)

# 1
BOD %>% filter(Time > 3)

# 2
`%|%` <- `%>%`
BOD %|% filter(Time > 3)

# 3 - not recommended
`|` <- `%>%`
BOD | filter(Time > 3)
rm(`|`) # remove to limit damage

# 3a - redefine | locally only
with(list(`|` = `%>%`), BOD | filter(Time > 3))

# 4 - needs development version of R
BOD |> filter(Time > 3)

# 5 - bizzaro pipe
BOD ->.; filter(., Time > 3)

仅供参考,本机将有一个管道-|>

供参考,本机将有一个管道-|>

在这种情况下,您将做什么?|在R中具有特定含义,作为OR逻辑运算符。如果愿意,您可以将其重新定义为管道,但这样做是不可取的。相反,接受不同的语言意味着不同的语法。同意菲尔的观点-重载是个坏主意。如果你真的嫁给了垂直坏蛋,你可以定义一个中缀运算符%|%。事实上,我相信至少有一个magrittr替代方案已经存在,因此代码的可读性和可比性会受到影响,因此,在我看来,您应该使用%>%=shift+ctrl+m。您需要知道%>%在Linux中不像管道一样,每个组件都是一个单独的进程,同时运行。使用不同的语法很有用,因为它的行为不同。在这种情况下,您将为或做什么?|在R中有特定的含义,作为OR逻辑运算符。如果愿意,您可以将其重新定义为管道,但这样做是不可取的。相反,接受不同的语言意味着不同的语法。同意菲尔的观点-重载是个坏主意。如果你真的嫁给了垂直坏蛋,你可以定义一个中缀运算符%|%。事实上,我相信至少有一个magrittr替代方案已经存在,因此代码的可读性和可比性会受到影响,因此,在我看来,您应该使用%>%=shift+ctrl+m。您需要知道%>%在Linux中不像管道一样,每个组件都是一个单独的进程,同时运行。使用不同的语法很有用,因为它的行为不同。