magrittr%>%管道如何正常工作?

时间:2017-09-30 02:08:20

标签: r magrittr

因此,对于我的生活,我无法理解这个极其简单的概念。

take this code for example in this image.

这段代码看起来像是来自地狱的代码。我被告知管道就像俄罗斯的嵌套娃娃。管道之前的每个语句显然都是在管道之后输入语句。这就是我被告知的。所以我不明白的是,首先如何继续无休止地连接,第二,管道如何知道前一个语句在下一个语句中的位置?

让我举个例子...... read.csv2 ...%>%select(-x..otu)

它一直在那里继续......它如何知道将前一个语句或函数放在下一个语句中的哪个位置?

1 个答案:

答案 0 :(得分:1)

默认是将其放在第一个参数中。但是,您可以使用.覆盖此默认值。当您需要将函数的输出提供给另一个函数的输入而不创建可填充全局环境的中间变量时,管道非常有用。在您的示例代码中,在ggplot输出绘图之前没有创建中间变量。没有%>%,没有创建中间变量的唯一方法,同时,具有复杂的操作是嵌套所有函数,这将更加令人困惑......

例如(编造):

df %>%
  group_by(id) %>%
  summarize(n()) %>%
  inner_join(df) %>%
  mutate(revenue = price*quantity)

会转换为:

mutate(inner_join(summarize(group_by(df, id), n()), df), revenue = price*quantity)

这对眼睛并不特别有吸引力......