为什么在base::Split(.$cyl)中使用圆点? [英] Why dot in base::split(.$cyl)?
本文介绍了为什么在base::Split(.$cyl)中使用圆点?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
split(.$cyl)
。为什么.$cyl
中的圆点。包purrr
具有占位符的语法(.
或.x
),但purrr
未涉及。
library(tidyverse)
mtcars %>% split(f=.$cyl)
推荐答案
purrr使用的占位符语法也由magrittr管道使用(%>%
)。默认情况下,管道传递左侧(LHS)作为右侧(RHS)函数的第一个参数。在这种情况下,RHS表达式中不需要.
。
例如:
mtcars %>% str()
工作正常,相当于:
mtcars %>% str(.)
在这种情况下,.
完全没有必要,因为lhs(mtcars
)是传递给str()
的第一个参数。
所以这等同于:
str(mtcars)
但在任何其他情况下,您需要使用.
来标记在RHS中应在何处传递LHS。
您的示例有点复杂,因为lhs(mtcars
)在RHS中传递了两次(函数split()
):
- 首先作为第一个参数(因此不需要
.
) - 然后,再次作为第二个参数的一部分(因此在这种情况下您确实需要
.
)。
mtcars %>% split(f = .$cyl)
可以写成(虽然这是不必要的):
mtcars %>% split(x = ., f = .$cyl)
,因此实际上相当于:
split(x = mtcars, f = mtcars$cyl)
这篇关于为什么在base::Split(.$cyl)中使用圆点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文