R:带管道的配方

时间:2016-06-15 10:46:25

标签: r

我有一个R公式,它使用magrittr包中的管道运算符%T>%。但是,我无法确切地知道它的作用。谁能告诉我这个配方的作用以及如何在没有管道操作员的情况下编写它。

dataframe %T>% {variable_name <<- .[condition,sum(another variable)]}

这里,条件类似于

size > 100

和另一个变量类似

length

大小和长度都是数据框中的变量。

2 个答案:

答案 0 :(得分:1)

%T>%是&#34; tee&#34;运营商。如magrittr's vignette中所定义:

  

%T>%的作用类似于%>%,除了它返回左侧值,而不是右侧操作的结果。

换句话说,当您使用T恤操作员时:

  1. 发球台完成后的操作
  2. 管道&#34;重启&#34;从发球台前开始,在发球台后跳过运作。
  3. T恤可以合并。

    结合{..},它可用于执行多项操作,例如ggplot2图表:

    library(dplyr)
    library(magrittr)
    library(ggplot2)
    iris %>% 
        filter(Sepal.Length > 5.2) %T>% 
        {print(ggplot(data=., aes(x=Petal.Length, y=Petal.Width)) + geom_point())}  %>% 
        head
    

    打印过滤后的iris 上的第一行和会产生ggplot2作为副作用。后者需要打印才能在这种情况下生产。

    你可以看到tee运算符是一种避免死胡同的方法:例如ggplot2会返回一个gg / ggplot对象,但这可能不是你想要的东西继续管道。通常,您可能希望在管道中的某个点生成图形,然后继续管道。

答案 1 :(得分:0)

假设原始表达式中的dataframedata.table,您要做的是:将dataframecondition进行子集化,计算{{1}的总和在子集中,将总和分配给名为other variable的全局变量并打印variable_name的内容。

Vincent Bonhomme已经解释了“tee”运营商的所作所为。也就是说,它使得表达式在这种情况下返回dataframe的值。我认为这里的混淆是由表达式中的dataframe引起的。来自.

  

将lhs放置在rhs中的其他位置

     

通常你会想要lhs到另一个位置的rhs调用   第一。为此,您可以使用点(。)作为占位符。对于   例如,y%&gt;%f(x,。)相当于f(x,y)和z%&gt;%f(x,y,arg)   =。)相当于f(x,y,arg = z)。

以下是帖子中表达式的示例:

help("%>%")