![](/img/trans.png)
[英]What are the differences between R's new native pipe `|>` and the magrittr pipe `%>%`?
[英]Why isn't the magrittr %<>% assignment pipe working with R's native pipe (|>)
我注意到 search-replace %>%
with |>
確實會導致一些錯誤。 顯而易見的一個是缺少占位符,即
mtcars %>%
lm(mpg ~ hp, data = .)
必須改寫為:
mtcars |>
(\(d) lm(mpg ~ hp, data = d))()
出現的另一件事是%<>%
突然無法按預期工作。
從R 4.2.0開始,使用正向管道,您現在可以使用下划線占位符(對應於 magrittr 的點)將對象通過管道傳輸到選定的命名參數:
在正向管道 |> 表達式中,現在可以在 rhs 調用中使用帶有占位符 _ 的命名參數來指定要插入 lhs 的位置。 占位符只能在 rhs 上出現一次。
mtcars |>
lm(mpg ~ hp, data = _)
Call:
lm(formula = mpg ~ hp, data = mtcars)
Coefficients:
(Intercept) hp
30.09886 -0.06823
分配管道%<>%
不再是由於operator priority的原因。 %<>%
出現在|>
之前,請參見下面的示例:
library(magrittr)
library(tidyverse)
a <- tibble(a = 1:3)
a %<>%
mutate(b = a * 2) |>
mutate(c = a * 3) |>
filter(a <= 2)
a
退貨
# A tibble: 3 × 2
a b
<int> <dbl>
1 1 2
2 2 4
3 3 6
就這樣
a %<>%
mutate(b = a * 2)
是唯一保存的部分。 您還可以感覺到這可能是這種情況,因為您打印的是預期的表格,而不應該是 tibble 分配的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.