dplyr链中的write.csv()

mal*_*atr 11 csv file-io r dplyr

我之前遇到过这个问题,但只是在链外写了导出函数.有没有办法write.csvdplyr链中包含一个语句?

library(dplyr)

data_set %>%
filter(Date == Sys.Date() - 1 | Date == Sys.Date()) %>%
write.csv('data_set_twodays.csv', row.names = F) %>%
filter(Date = Sys.Date()) %>%
write.csv('data_set_today.csv', row.names = F)
NULL
Run Code Online (Sandbox Code Playgroud)

jor*_*ran 17

这在0.2版本中似乎对我有用:

mtcars %>% filter(cyl == 4) %>% write.csv(.,file = "~/Desktop/piping.csv")
Run Code Online (Sandbox Code Playgroud)

  • 哇,这个dplyr的东西真的开始看起来像一种新语言......就像unix管道遇到lisp之类的东西. (4认同)
  • @hadley任何使用`group_by`工作的方法?例如`df%>%group_by(SomeGroup)%>%write.csv(paste0(SomeGroup,".csv"))` (3认同)
  • 由于数据是 `write.csv()` 的第一个参数,你不需要 `.` 或显式参数名称 `file`。 (2认同)

kma*_*ace 5

你正在寻找T管道:

%T>% 将运行该函数,但将输入作为输出传递

library(dplyr)
library(magrittr)

data_set %>%
filter(Date == Sys.Date() - 1 | Date == Sys.Date()) %T>%
write.csv('data_set_twodays.csv', row.names = F) %>%
filter(Date = Sys.Date()) %T>%
write.csv('data_set_today.csv', row.names = F) 
Run Code Online (Sandbox Code Playgroud)

人们经常使用它来绘制中间体而不会破坏管道!

来自文档:

rnorm(200) %>%
matrix(ncol = 2) %T>%
plot %>% # plot usually does not return anything. 
colSums
Run Code Online (Sandbox Code Playgroud)