在 dplyr 链的中间步骤期间将数据帧打印到控制台

Par*_*gue 4 r dplyr

在调试函数中的 dplyr 链时,我经常希望能够将 data.frame 的中间更改打印到控制台。我该怎么做?

例如:

data(cars)
cars %>% group_by(speed) %>% 
  summarize(dist_mean = mean(dist)) %>%
  [insert printing function] %>% 
  group_by(speed > 10) %>%
  summarize(dist_mean = mean(dist_mean)) %>%
  [insert printing function]
Run Code Online (Sandbox Code Playgroud)

我可以做些什么来替换将[insert printing function]数据帧的当前状态打印到控制台,同时仍然不间断地继续链?

Sim*_*.A. 5

尝试一下 T 形管:%T>%

来自文档:

将值通过管道传送到函数或调用表达式中,并返回原始值而不是结果。当表达式用于其副作用(例如绘图或打印)时,这非常有用。

这里有一个很好的例子以及其他两个不太常见的管道命令。

插入回原来的上下文中:

data(cars)
cars %>% group_by(speed) %>% 
  summarize(dist_mean = mean(dist)) %T>%
  print() %>% 
  group_by(speed > 10) %>%
  summarize(dist_mean = mean(dist_mean)) %T>%
  print()
Run Code Online (Sandbox Code Playgroud)

编辑:根据 @Ritchie Sacramento 的评论,管道是 magrittr 包的一部分。它们似乎也由 dplyr 再出口。如果致电后它们不起作用,library(dplyr)那么您将需要致电library(magrittr)才能访问它们。

  • 除非用户点击您的链接,否则他们可能不知道“%T>%”是“magrittr”函数而不是“dplyr”函数。您可以通过指定必要的库调用来改进您的答案。 (4认同)