为什么我不能在调用R的split函数时使用显式形式而不是magrittr管道?

时间:2018-02-20 16:34:13

标签: r magrittr

library(magrittr)

mtcars %>% split(.$cyl)

split(mtcars, .$cyl)

我很困惑为什么第二行有效,但第三行没有。

我正在阅读http://r4ds.had.co.nz/,其中说明了

enter image description herehttp://r4ds.had.co.nz/transform.html#combining-multiple-operations-with-the-pipe

这表明第二行和第三行应该相同,但第三行给出错误

  

split.default中的错误(x = seq_len(nrow(x)),f = f,drop = drop,...)   :object'。'找不到

我从http://r4ds.had.co.nz/iteration.html#shortcuts获得了第二行,但我不记得此代码中对点的解释。作者写道:

  

我在这里用过。作为代词:它指的是当前的列表元素   (就像我提到的当前索引一样   循环)。

但是我不明白列表元素在这种情况下是“当前”意味着什么。

为什么第二行在第二行没有出错时会出错?

1 个答案:

答案 0 :(得分:6)

Dot对R没有特殊意义。%>%解释了点。

以通常的函数调用形式表示它正在运行:

"%>%"(mtcars, split(.$cyl))

并且%>%用于处理其参数的规则在其帮助文件中定义:

help("%>%", "magrittr")