library(magrittr)
mtcars %>% split(.$cyl)
split(mtcars, .$cyl)
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么第二行有效,但第三行没有.
我正在阅读http://r4ds.had.co.nz/,其中说明
(http://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获得了第二行,但我不记得此代码中对点的解释.作者写道:
我在这里用过.作为代词:它引用当前列表元素(与我在for循环中引用当前索引的方式相同).
但我不明白列表元素在这种情况下是"当前"意味着什么.
当第二行没有时,为什么第三行会出错?
Dot对R没有特殊意义.它%>%解释了点.
以通常的函数调用形式表示它正在运行:
"%>%"(mtcars, split(.$cyl))
Run Code Online (Sandbox Code Playgroud)
并且%>%用于处理其参数的规则在其帮助文件中定义:
help("%>%", "magrittr")
Run Code Online (Sandbox Code Playgroud)