通过magrittr的 pipeline ( %>%) 这段代码可以工作;
library(dplyr)
set.seed(1)
a <- sample(LETTERS[1:30],5)
a %>% gsub('A','-',x = .)
Run Code Online (Sandbox Code Playgroud)
但在 R 的本机或“内置”管道中,我无法使用点进行管道传输,这个不起作用;
set.seed(1)
a <- sample(LETTERS[1:30],5)
a |> gsub('A','-',x = .)
Run Code Online (Sandbox Code Playgroud)
我们如何通过原生 R 管道传递非第一个参数?
Noa*_*oah 13
R 管道将提供的对象传递给第一个未命名参数。如果您命名其他参数,它将被正确传递。对于gsub(),这看起来如下:
a |> gsub(pattern = 'A', replacement = '-')
# "Y" "D" "G" "-" "B"
Run Code Online (Sandbox Code Playgroud)
Maë*_*aël 11
您可以使用本机管道的占位符_:
a |> gsub('A','-', x = _)
#[1] "Y" "D" "G" "-" "B
Run Code Online (Sandbox Code Playgroud)
如果您想将 LHS 传递给第一个未命名参数之外的其他参数,您可以使用匿名函数,只需将其设为函数调用即可。
set.seed(1)
a <- sample(LETTERS[1:30],5)
a |> (\(.) gsub('A', '-', x = .))()
#> [1] "Y" "D" "G" "-" "B"
Run Code Online (Sandbox Code Playgroud)
由reprex 包于 2022 年 1 月 5 日创建(v2.0.1)
| 归档时间: |
|
| 查看次数: |
1560 次 |
| 最近记录: |