为什么我不能在调用 R 的 split 函数时使用显式形式而不是 magrittr 管道?
Why can't I use the explicit form instead of a magrittr pipe in a call to R's split function?
library(magrittr)
mtcars %>% split(.$cyl)
split(mtcars, .$cyl)
我很困惑为什么第二行有效,但第三行无效。
我正在阅读 http://r4ds.had.co.nz/,其中指出
(http://r4ds.had.co.nz/transform.html#combining-multiple-operations-with-the-pipe)
这表明第二行和第三行应该相同,但第三行给出了错误
Error in split.default(x = seq_len(nrow(x)), f = f, drop = drop, ...)
: object '.' not found
我从 http://r4ds.had.co.nz/iteration.html#shortcuts 得到了第二行,但我不记得这段代码中对圆点的解释。作者写道:
Here I’ve used . as a pronoun: it refers to the current list element
(in the same way that i referred to the current index in the for
loop).
但我不明白在这种情况下列表元素 "current" 是什么意思。
为什么第三行报错而第二行不报错?
点对R没有特殊意义。解释点的是%>%
。
函数调用通常的表达形式是运行这个:
"%>%"(mtcars, split(.$cyl))
%>%
用于处理其参数的规则在其帮助文件中定义:
help("%>%", "magrittr")
library(magrittr)
mtcars %>% split(.$cyl)
split(mtcars, .$cyl)
我很困惑为什么第二行有效,但第三行无效。
我正在阅读 http://r4ds.had.co.nz/,其中指出
这表明第二行和第三行应该相同,但第三行给出了错误
Error in split.default(x = seq_len(nrow(x)), f = f, drop = drop, ...) : object '.' not found
我从 http://r4ds.had.co.nz/iteration.html#shortcuts 得到了第二行,但我不记得这段代码中对圆点的解释。作者写道:
Here I’ve used . as a pronoun: it refers to the current list element (in the same way that i referred to the current index in the for loop).
但我不明白在这种情况下列表元素 "current" 是什么意思。
为什么第三行报错而第二行不报错?
点对R没有特殊意义。解释点的是%>%
。
函数调用通常的表达形式是运行这个:
"%>%"(mtcars, split(.$cyl))
%>%
用于处理其参数的规则在其帮助文件中定义:
help("%>%", "magrittr")