Записать вывод в csv, используя функцию цикла for в R - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть две таблицы, и я хочу вывести их в несколько файлов.Таблица выглядит следующим образом:

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 голосов
/ 24 апреля 2018

Вам нужно всего лишь 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))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...