是否有一个命令可以添加到 tidyverse 管道中,该命令不会中断流程,但会产生一些副作用,比如打印出来的东西。我想到的用例是这样的。如果是管道

data %>%
  mutate(new_var = <some time consuming operation>) %>%
  mutate(new_var2 = <some other time consuming operation>) %>%
  ...

我想向管道添加一些不会修改最终结果的命令,但会打印出一些进度或事情的状态。也许是这样的:
data %>%
  mutate(new_var = <some time consuming operation>) %>%
  command_x(print("first operation done")) %>%
  mutate(new_var2 = <some other time consuming operation>) %>%
  ...

是否已经存在这样的 command_x

最佳答案

您可以轻松编写自己的函数

pass_through <- function(data, fun) {fun(data); data}

并使用它
mtcars %>% pass_through(. %>% ncol %>% print) %>% nrow

这里我们使用 . %>% 语法来创建匿名函数。您也可以更明确地编写自己的
mtcars %>% pass_through(function(x) print(ncol(x))) %>% nrow

关于r - 打印中间结果而不会破坏tidyverse中的流水线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46123285/

10-11 13:48