我无法弄清楚这一点。
library(dplyr)
dat <- data.frame(a = 1:5,b = rep(TRUE,5))
# this doesn't work
dat %>% all(.$b) # tricky
# this doesn't work
dat %>% all(b) #
# this does
dat %>% .$b %>% all
我觉得all(.$b)
不起作用令人困惑。这对我来说似乎并不直观。
答案 0 :(得分:6)
好吧,<h2>Model</h2>
<pre>{{vm.model }}</pre>
运算符是从定义following rules的%>%
包借来的:
您可以看到整个数据框仍作为此示例的第一个参数传入
magrittr
所以你得到data.frame和vector(函数接收两个参数)。我相信这是因为您没有将f<-function(...) str(list(...))
dat %>% f(.$b)
# $ :'data.frame': 5 obs. of 2 variables:
# ..$ a: int [1:5] 1 2 3 4 5
# ..$ b: logi [1:5] TRUE TRUE TRUE TRUE TRUE
# $ : logi [1:5] TRUE TRUE TRUE TRUE TRUE
移动到第一个参数以外的位置,因此您不会将行为作为第一个参数传递给对象。
恰好,.
包具有不同的运算符,可用于此类情况。您可以使用magrittr
。
%$%