r - 为什么点在 base::split(.$cyl) 中?
问题描述
在 R for data science第 21.5.1 章中,此语法用于基本函数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()
) 中传递了两次:
- 首先,作为第一个参数(所以
.
不需要) - 然后,再次作为第二个参数的一部分(所以
.
在这种情况下你确实需要 a )。
mtcars %>% split(f = .$cyl)
可以写成(尽管那是不必要的):
mtcars %>% split(x = ., f = .$cyl)
因此实际上等同于:
split(x = mtcars, f = mtcars$cyl)
推荐阅读
- ios - iOS - IGListKit - 使用 UIImageView 实现自我调整大小的单元格
- reactjs - 当在 draft-js 中单击编辑器时,focus() 会导致页面向上滚动
- ssis - SSIS中增量负载的最佳方法是什么
- python - Python 3 lambda 错误:Series 的真值不明确
- oracle - 我可以通过 Oracle SQL Developer 连接到我的架构,但不能通过 JDBC
- c# - 在 texbox 中按回车键调用一个方法
- sql - DBMS_METADATA.GET_DDL 的任何替代方式
- typescript - 带接口参数的函数重载
- javascript - 有哪些依赖“typeof null”返回对象的代码示例?
- java - 根据另一个数组对对象的 ArrayList 进行排序