有没有办法将 R 中的管道拆分为两个输出函数?

Is there a way to split piping in R to two output functions?

我需要保存汇总表的 Latex 和 Word 版本。是否有管道运算符可以将输入分成两个输出?理想情况下,我想要一些可以 species_tab 并同时保存到 latex 和 word 中的东西。

library(datasets)
library(flextable)
library(gt)

species_tab <- iris %>% 
  tabyl(Species)

species_tab %>% 
  gt() %>% 
  gtsave(filename = "species.tex")

species_tab %>% 
  flextable() %>% 
  save_as_docx(path = "species.docx")

一个选项是用 {}

换行
library(datasets)
library(flextable)
library(gt)
iris %>% 
   tabyl(Species) %>% 
   {. %>%
    gt() %>% 
     gtsave(filename = "species.tex")
    . %>%
     flextable() %>%
     save_as_docx(path = "species.docx")
}

您可以使用 magrittr 中的 %T>% 运算符,当您想要 return 运算符的 lhs 而不是 [= 的输出时使用该运算符14=]。但是,它很混乱,并不是操作员的真正用例,所以可以使用@akrun 的解决方案。但有些情况下您不必使用 { } 并且 t 形运算符比普通管道更可取。

library(magrittr)

species_tab %T>% 
  { gtsave(data = gt(.), filename = "species.tex")} %>% 
  flextable() %>% 
  save_as_docx(path = "species.docx")