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

R: Write to CSV and continue through piping

有什么方法可以在一串管道 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")

我可以创建自己的函数:

csv2go <- function(x, ...) {
  write.csv(x, ...)
  x
}

但想知道在 base 或 dplyr 中是否有这样做的东西。也许 library(readr) 中的 write_csv() 函数可以采用这个选项?

您需要这样的东西吗?这就是我将 csvs 写入 HDFS 的方式。

write.csv(data, file=pipe("hadoop dfs -put - /tmp/test.csv"))

很简单!!!您需要做的就是添加一个字符 "T" 以将常规管道运算符 %>% 转换为 T 形管道运算符 %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") 

%T>% 是你的新朋友