使用R中的for循环函数将输出写入csv

时间:2018-04-24 19:14:09

标签: r csv for-loop dataframe datatable

我有两个表,我想将它们输出到几个文件。该表看起来像:

df1 ---
  Colors
  Red
  Blue

df2 ---
 Colors      Name       Rate
 Red         A          3
 Red         B          5   
 Red         C          6
 Blue        D          2
 Blue        E          8

我想根据颜色将此数据写入csv文件。这意味着文件一将包含

    Colors      Name       Rate
     Red         A          3
     Red         B          5   
     Red         C          6

和文件二将包含

    Colors      Name       Rate     
     Blue        D          2
     Blue        E          8

我试过

output_file <- c()
for (i in 1:nrow(df1)){
  if (df1$Colors[i] == df2$Colors[i]){
    output_file[i] <- df2[i]
    write.csv(output_file, paste("Color_", i, ".csv"), row.names = F)
  }
}

但语法错误,我找不到它们!语法错误在哪里?

1 个答案:

答案 0 :(得分:1)

您只需要df2

您可以使用group_by(...)do(...)

library(tidyverse)
path <- "C:/MyDir/"
mtcars %>% 
  group_by(cyl) %>% 
  do(write_tsv(., paste0(path, unique(.$cyl))))

split(...)map(..., ...)

mtcars %>%
  split(.$cyl) %>%
  map(., ~write_tsv(.x, paste0(path, unique(.$cyl))))