在 R for data science第 21.5.1 章中,此语法用于基本函数split(.$cyl)。为什么点在.$cyl. 该包具有占位符( 或)purrr的语法,但未涉及。..xpurrr
library(tidyverse)
mtcars %>% split(f=.$cyl)
Run Code Online (Sandbox Code Playgroud)
purrr 使用的占位符语法也由 magrittr 管道 ( ) 使用%>%。默认情况下,管道将左侧 (LHS) 作为右侧 (RHS) 函数的第一个参数传递。在这种情况下,.RHS 表达式中不需要 。
例如:
mtcars %>% str()
Run Code Online (Sandbox Code Playgroud)
工作正常,相当于:
mtcars %>% str(.)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,完全.没有必要,因为 LHS( mtcars)是传递给 的第一个参数str()。
所以这与:
str(mtcars)
Run Code Online (Sandbox Code Playgroud)
但在任何其他情况下,您需要使用.来标记在 RHS 中 LHS 应通过的位置。
您的示例有点复杂,因为 LHS ( mtcars) 在 RHS (函数split())中传递了两次:
.).在这种情况下你确实需要 a )。mtcars %>% split(f = .$cyl)
Run Code Online (Sandbox Code Playgroud)
可以写成(尽管这是不必要的):
mtcars %>% split(x = ., f = .$cyl)
Run Code Online (Sandbox Code Playgroud)
因此实际上相当于:
split(x = mtcars, f = mtcars$cyl)
Run Code Online (Sandbox Code Playgroud)