为什么在base::Split(.$cyl)中使用圆点? [英] Why dot in base::split(.$cyl)?

查看:10
本文介绍了为什么在base::Split(.$cyl)中使用圆点?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在R for data ScienceChapter 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()):

  • 首先作为第一个参数(因此不需要.)
  • 然后,再次作为第二个参数的一部分(因此在这种情况下您确实需要.)。
mtcars %>% split(f = .$cyl)

可以写成(虽然这是不必要的):

mtcars %>% split(x = ., f = .$cyl)

,因此实际上相当于:

split(x = mtcars, f = mtcars$cyl)

这篇关于为什么在base::Split(.$cyl)中使用圆点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆