簡體   English   中英

為什么 magrittr %<>% 分配管道不能與 R 的本機管道 (|>) 一起使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM