相关疑难解决方法(0)

R 的新原生管道 `|>` 和 magrittr 管道 `%>%` 有什么区别?

在 R 4.1 中引入了一个本地管道运算符,它比以前的实现“更加精简”。我已经注意到 native|>和 magrittr pipe之间的一个区别%>%,即2 %>% sqrt可以工作但2 |> sqrt不能,并且必须写为2 |> sqrt(). 使用新的管道运算符时是否有更多差异和陷阱需要注意?

r pipe tidyverse

12
推荐指数
5
解决办法
671
查看次数

相同的函数,但使用名称 %>% 会导致与使用名称 := 时不同的结果

我正在使用@Konrad Rudolph的函数,但将其名称从 更改%>%:=,并获得相同的调用不同的结果。

`%>%` = function (lhs, rhs) {
  subst = call('substitute', substitute(rhs), list(. = lhs))
  eval.parent(eval(subst))
}

`:=` <- `%>%`

1 %>% .+2 %>% .*3
#[1] 7

1 := .+2 := .*3
#[1] 3
Run Code Online (Sandbox Code Playgroud)

或者具有不同的功能。

`%>%` <- function(lhs, rhs) {
  assign(".", lhs, envir=parent.frame())
  eval(substitute(rhs), parent.frame())
}

`:=` <- `%>%`

1 %>% .+2 %>% .*3
#[1] 7

1 := .+2 := .*3
#[1] 9
Run Code Online (Sandbox Code Playgroud)

为什么使用名为 的函数时会得到其他结果:=

r pipe operator-precedence

4
推荐指数
1
解决办法
108
查看次数

标签 统计

pipe ×2

r ×2

operator-precedence ×1

tidyverse ×1