r - 拆分管道,以便输出到两个单独的命令
问题描述
我正在学习 tidyverse,并且喜欢管道操作员提供的流程。我想知道,是否可以完全拆分管道,以便管道一部分的输出可以转到两个单独的命令?我对此进行了一些研究,但没有看到任何可能的情况。因此,您不必做这样的事情,而必须保存第一步。
iris_filter <- iris %>%
filter(Sepal.Length <= 5.8)
iris_filter %>%
summarise(n= n())
iris_filter %>%
arrange(Sepal.Length)
解决方案
-package 中的%T>%
运算符magrittr
似乎是您正在寻找的。
但是对于那个特定的问题,我会编写一个自定义函数来输出原始数据:
library(tidyverse)
custom.function <- function(x) {
summarise(x, n = n()) %>%
print()
return(x)
}
iris %>%
filter(Sepal.Length <= 5.8) %>%
custom.function() %>%
arrange(Sepal.Length)
#> n
#> 1 80
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 4.3 3.0 1.1 0.1 setosa
#> 2 4.4 2.9 1.4 0.2 setosa
#> 3 4.4 3.0 1.3 0.2 setosa
#> 4 4.4 3.2 1.3 0.2 setosa
#> 5 4.5 2.3 1.3 0.3 setosa
#> 6 4.6 3.1 1.5 0.2 setosa
#> 7 4.6 3.4 1.4 0.3 setosa
#> 8 4.6 3.6 1.0 0.2 setosa
#> 9 4.6 3.2 1.4 0.2 setosa
#> 10 4.7 3.2 1.3 0.2 setosa
#> 11 4.7 3.2 1.6 0.2 setosa
#> 12 4.8 3.4 1.6 0.2 setosa
#> 13 4.8 3.0 1.4 0.1 setosa
#> 14 4.8 3.4 1.9 0.2 setosa
#> 15 4.8 3.1 1.6 0.2 setosa
#> 16 4.8 3.0 1.4 0.3 setosa
#> 17 4.9 3.0 1.4 0.2 setosa
#> 18 4.9 3.1 1.5 0.1 setosa
#> 19 4.9 3.1 1.5 0.2 setosa
#> 20 4.9 3.6 1.4 0.1 setosa
#> 21 4.9 2.4 3.3 1.0 versicolor
#> 22 4.9 2.5 4.5 1.7 virginica
#> 23 5.0 3.6 1.4 0.2 setosa
#> 24 5.0 3.4 1.5 0.2 setosa
#> 25 5.0 3.0 1.6 0.2 setosa
#> 26 5.0 3.4 1.6 0.4 setosa
#> 27 5.0 3.2 1.2 0.2 setosa
#> 28 5.0 3.5 1.3 0.3 setosa
#> 29 5.0 3.5 1.6 0.6 setosa
#> 30 5.0 3.3 1.4 0.2 setosa
#> 31 5.0 2.0 3.5 1.0 versicolor
#> 32 5.0 2.3 3.3 1.0 versicolor
#> 33 5.1 3.5 1.4 0.2 setosa
#> 34 5.1 3.5 1.4 0.3 setosa
#> 35 5.1 3.8 1.5 0.3 setosa
#> 36 5.1 3.7 1.5 0.4 setosa
#> 37 5.1 3.3 1.7 0.5 setosa
#> 38 5.1 3.4 1.5 0.2 setosa
#> 39 5.1 3.8 1.9 0.4 setosa
#> 40 5.1 3.8 1.6 0.2 setosa
#> 41 5.1 2.5 3.0 1.1 versicolor
#> 42 5.2 3.5 1.5 0.2 setosa
#> 43 5.2 3.4 1.4 0.2 setosa
#> 44 5.2 4.1 1.5 0.1 setosa
#> 45 5.2 2.7 3.9 1.4 versicolor
#> 46 5.3 3.7 1.5 0.2 setosa
#> 47 5.4 3.9 1.7 0.4 setosa
#> 48 5.4 3.7 1.5 0.2 setosa
#> 49 5.4 3.9 1.3 0.4 setosa
#> 50 5.4 3.4 1.7 0.2 setosa
#> 51 5.4 3.4 1.5 0.4 setosa
#> 52 5.4 3.0 4.5 1.5 versicolor
#> 53 5.5 4.2 1.4 0.2 setosa
#> 54 5.5 3.5 1.3 0.2 setosa
#> 55 5.5 2.3 4.0 1.3 versicolor
#> 56 5.5 2.4 3.8 1.1 versicolor
#> 57 5.5 2.4 3.7 1.0 versicolor
#> 58 5.5 2.5 4.0 1.3 versicolor
#> 59 5.5 2.6 4.4 1.2 versicolor
#> 60 5.6 2.9 3.6 1.3 versicolor
#> 61 5.6 3.0 4.5 1.5 versicolor
#> 62 5.6 2.5 3.9 1.1 versicolor
#> 63 5.6 3.0 4.1 1.3 versicolor
#> 64 5.6 2.7 4.2 1.3 versicolor
#> 65 5.6 2.8 4.9 2.0 virginica
#> 66 5.7 4.4 1.5 0.4 setosa
#> 67 5.7 3.8 1.7 0.3 setosa
#> 68 5.7 2.8 4.5 1.3 versicolor
#> 69 5.7 2.6 3.5 1.0 versicolor
#> 70 5.7 3.0 4.2 1.2 versicolor
#> 71 5.7 2.9 4.2 1.3 versicolor
#> 72 5.7 2.8 4.1 1.3 versicolor
#> 73 5.7 2.5 5.0 2.0 virginica
#> 74 5.8 4.0 1.2 0.2 setosa
#> 75 5.8 2.7 4.1 1.0 versicolor
#> 76 5.8 2.7 3.9 1.2 versicolor
#> 77 5.8 2.6 4.0 1.2 versicolor
#> 78 5.8 2.7 5.1 1.9 virginica
#> 79 5.8 2.8 5.1 2.4 virginica
#> 80 5.8 2.7 5.1 1.9 virginica
由reprex 包(v0.2.1)于 2018 年 11 月 4 日创建
推荐阅读
- php - 在 PHP 中,下一页的上一个唯一值将其保存到那里的数据库中,但出现错误。我能做些什么?
- mysql - 当“LIKE”查询与 sqljocky5 包一起使用时,服务器以空结果响应
- gnome - 如何将 gnome 配置为在锁定屏幕上仅使用一种特定的键盘布局?
- c++ - C++ while(file input stream)循环在上级while循环中只执行一次
- spring - 禁用 SSL 后无法在 chrome/chromium 中登录我的 Spring 应用程序
- php - 直接对 JSON 数据进行分类
- python - 制作一个不显示终端的exe文件
- python - 无法通过 pip 为 jupyter notebook 下载包
- java - 如何告诉 Swagger 用字符串完全替换集合类型?
- python - 为什么找不到python中的“csvquery”包?