代码之家  ›  专栏  ›  技术社区  ›  stackinator Brenton Wiernik

R`{}`包装器和dplyr的更多问题

  •  1
  • stackinator Brenton Wiernik  · 技术社区  · 6 年前

    我前面的一个问题(带答案)说明了 {} 包装器阻止管道传输到第一个可能的参数。现在我用下面的方式来处理这个问题。

    # this all works
    library(tidyverse)
    mt <- mtcars %>% count(cyl)
    seq_along(mt$cyl)
    

    上面的代码行得通。下面两个都不行。我出错了, 这次我做错什么了?

    # does not work
    mtcars %>% 
      count(cyl) %>% 
      {seq_along(cyl)}
    
    #does not work
    mtcars %>% 
      count(cyl) %>% 
      seq_along(cyl)
    

    如果我的东西都说不通的话 我真正需要的 最简单的例子就是

    1 回复  |  直到 6 年前
        1
  •  3
  •   MrFlick    6 年前

    mtcars %>% 
      count(cyl) %>% 
      {seq_along(.$cyl)}
    

    对象仍作为 . 但它不会自动插入到第一个参数中。

    mtcars %>% 
      count(cyl) %>% 
      {seq_along(cyl)}
    

    与这两个单独的命令相同

    count(mtcars, cyl)
    seq_along(cyl)
    

    因为你从来没用过链条上的东西。你的第二个案子呢

    mtcars %>% 
      count(cyl) %>% 
      seq_along(cyl)
    

    seq_along(count(mtcase, cyl), cyl)
    

    seq_along