【发布时间】:2021-09-05 07:37:06
【问题描述】:
使用magrittr pipe (%>%),我偶尔会将结果传递给多个参数,例如
ds <-
datasets::airquality |>
head()
ds %>%
# ds |>
knitr::kable(
x = .,
col.names = tolower(colnames(.)),
format = "markdown"
)
结果:
| ozone| solar.r| wind| temp| month| day|
|-----:|-------:|----:|----:|-----:|---:|
| 41| 190| 7.4| 67| 5| 1|
| 36| 118| 8.0| 72| 5| 2|
| 12| 149| 12.6| 74| 5| 3|
| 18| 313| 11.5| 62| 5| 4|
| NA| NA| 14.3| 56| 5| 5|
| 28| NA| 14.9| 66| 5| 6|
但是R's new native pipe (|>, introduced in 4.1.0) 不支持这个。将 %>% 替换为 |> 会引发此错误:
Error in knitr::kable(head(datasets::airquality), x = ., col.names = tolower(colnames(.)), :
object '.' not found
release notes中的描述(我的重点):
R 现在提供简单的本机正向管道语法 |>。前向管道的简单形式在右侧调用中插入左侧作为第一个参数。作为语法转换的管道实现是由 Jim Hester 和 Lionel Henry 的建议推动的。
除了定义一个新的(匿名或显式)函数来包装下面提出的 rhs(右侧)函数之外,还有其他方法使用|>吗?
【问题讨论】: