【问题标题】:Understanding %>% operator [duplicate]了解 %>% 运算符 [重复]
【发布时间】:2014-07-19 21:14:38
【问题描述】:

很抱歉提出一个菜鸟问题,但我是 R 新手,需要帮助来解释这一点。

我看到指令:x %>% f(y) -> f(x , y)

这个“然后”符号%>%,我不明白。有人可以给我一个虚拟指南吗?我很难理解这一点。我明白它是这样的: x <- 3, y <- 3x(或者我在这里也可能错了)。任何人都可以在这里帮助我并以非常简单的方式向我解释吗?提前致谢!

附:这是使用的示例,我不知道它是什么

library(dplyr)
hourly_delay <- flights %>%

filter(!is.na(dep_delay)) %>% 

group_by(date, hour) %>%   

summarise(delay = mean(dep_delay), n = n()) %>%  

filter(n > 10)

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    你愿意写吗:

    library(magrittr)
    sum(multiply_by(add(1:10, 10), 2))
    

    或

    1:10 %>% add(10) %>% multiply_by(2) %>% sum()
    

    ?

    第二个示例中的意图更加明确,并且基本相同。通常最容易想到的第一个表达式 (1:10) 定义了您正在处理的某个数据对象,然后 %&gt;% 在该数据集上按顺序应用一组操作。大声朗读,

    Take the data 1:10, then add 10, then multiply by 2, then sum
    

    我们用英语描述操作的方式几乎与我们用管道运算符编写它的方式相同,这就是它如此出色的工具的原因。

    用你的例子:

    library(dplyr)
    flights %>%
        filter(!is.na(dep_delay)) %>%
        group_by(date, hour) %>%
        summarise(delay = mean(dep_delay), n = n()) %>%
        filter(n > 10)
    

    我们在说

    Take the data set flights, then
        Filter it so we only keep rows where `dep_delay` is not NA, then
        Group the data frame by the `date`, `hour` columns, then
        Summarize the data set (across grouping variables), with `delay`
          as the mean of `dep_delay`, and `n` as the number of elements
          in that 'group' (`n()`), then
        Filter it so we only keep rows where there were more than 10 
          elements per group.
    

    【讨论】:

    • 使用 sum(multiply_by(add(1:!0, 10), 2)),当我输入它时显示错误:找不到函数“multiply_by”。第二行显示 eval(expr, envir, enclos) 中的错误:找不到函数“add”。除此之外,感谢您的回答!只是想知道,所以序列在这里很重要,对吧?
    • 抱歉,您需要先使用library(magrittr) 来获取这些别名(加上管道运算符%&gt;%)
    • 我想你们俩也应该在这里提到dplyr
    • 哦,好吧!我正在尝试学习 dplyr,但没有意识到您需要 magrittr。现在会得到它:)
    • dplyr 导入(并重新导出)%&gt;%,因此您本身不需要它来使用dplyr,但magrittr 带有自己的一组实用程序功能(加载时默认不会得到 dplyr)
    猜你喜欢
    • 2019-12-31
    • 2019-10-11
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多