gpt4 book ai didi

r - 为什么在 base::split(.$cyl) 中加点?

转载 作者:行者123 更新时间:2023-12-02 03:08:13 24 4
gpt4 key购买 nike

在 R 中用于数据科学 Chapter 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()):

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

可以写成(尽管这是不必要的):

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

因此实际上相当于:

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

关于r - 为什么在 base::split(.$cyl) 中加点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58429203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com