有没有办法在一串管道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中是否存在这样的事情。也许write_csv()
中的library(readr)
函数可以采用此选项吗?
答案 0 :(得分:10)
非常简单!!!你需要做的就是添加一个字符&#34; T&#34;将常规管道运算符%&gt;%转换为Tee管道运算符%T&gt;%,如下所示:
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&gt;%是您的新朋友
答案 1 :(得分:1)
这样的东西你需要什么?这就是我将csvs写入HDFS的方法。
write.csv(data, file=pipe("hadoop dfs -put - /tmp/test.csv"))