R:写入CSV并继续通过管道

Luk*_*ins 3 r dplyr

有没有办法在一串管道dplyr函数中包含对write.csv的调用?

library(dplyr)
mtcars %>% 
  filter(cyl == 4) %>% 
  write.csv(file = "firstStage.csv") %>% 
  group_by(carb) %>% 
  summarise(hp.sum = sum(hp)) %>%
  write.csv(file = "secondStage.csv")
Run Code Online (Sandbox Code Playgroud)

我可以创建自己的函数:

csv2go <- function(x, ...) {
  write.csv(x, ...)
  x
}
Run Code Online (Sandbox Code Playgroud)

但是想知道在base或dplyr中是否存在这样的事情.也许write_csv()函数library(readr)可以采用这个选项?

hac*_*ckR 10

非常简单!!!您需要做的就是添加单个字符"T"以将常规管道运算符%>%转换为Tee管道运算符%T>%,如下所示:

library(dplyr)
mtcars %>% 
   filter(cyl == 4) %T>%                  # <== Tee-pipe operator 
   write.csv(file = "firstStage.csv") %>% 
   group_by(carb) %>% 
   summarise(hp.sum = sum(hp)) %>%
   write.csv(file = "secondStage.csv") 
Run Code Online (Sandbox Code Playgroud)

%T>%是你的新朋友