dplyr和所有的奇怪之处

dplyr和所有的奇怪之处,r,dplyr,magrittr,R,Dplyr,Magrittr,我想不出来 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 库(dplyr) dat%全部(b)# #确实如此 dat%>%。$b%>%全部 我发现所有(.$b

我想不出来

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
库(dplyr)
dat%全部(b)#
#确实如此
dat%>%。$b%>%全部

我发现
所有(.$b)
都不起作用,这让我感到困惑。这对我来说一点都不直观

那么,
%%>%%
操作符是从定义以下内容的
magrittr
包中借用的:

  • 默认情况下,左侧(LHS)将作为出现在右侧(RHS)的函数的第一个参数进行管道输入
  • 当需要在第一个位置以外的位置使用LHS时,可以使用点“.”作为占位符
  • 在本例中,您可以看到整个数据帧仍然作为第一个参数传入

    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
    

    回答得很好。我的印象是,当您显式键入
    时,它不会再次向前推
    。显然我是错的。
    library(magrittr)
    dat %$% all(b)
    # [1] TRUE