How to create multiple ,csv files in R?

后端 未结 3 1578
礼貌的吻别
礼貌的吻别 2021-01-15 05:42

I have a .csv file with data for different chromosomes. The chromosomes names are stored in the first column(column name: Chr). My aim is to separate the data for each chrom

相关标签:
3条回答
  • 2021-01-15 05:50

    One way is to read the input file one line at a time and append the line to the correct outfile based on the first x characters of the line:

    con <- file('yourInputFile', 'r') 
    
    while (length(input <- readLines(con, n=1) > 0){ 
          outputfile <- paste(substr(input, 1, 5), ".csv", sep="" ) 
           ### assuming first 5 characters are new file name
          outfile <- file(outputfile, 'a')
          writeLines(output, con=outfile)
          close(outfile)
    } 
    

    The advantage of this approach is that it works even if yourInputFile is too big to read into memory. The downside is that this approach is slow as it does a lot of opening/closing of files.

    0 讨论(0)
  • 2021-01-15 05:59

    Illustrating a one liner using plyr and the dataset iris

    plyr::d_ply(iris, .(Species), function(x) write.csv(x, 
      file = paste(x$Species, ".csv", sep = "")))
    
    0 讨论(0)
  • 2021-01-15 06:13
    1. Read Data

      fn <- dir(pattern="csv")
      data_in <- do.call(rbind,lapply(fn,read.csv))
      
    2. Split by chromosome

      data_out <- split(data_in,data_in[[1]])
      
    3. Write by chromosome

      chn <- unlist(lapply(data_out,"[",1,1))
      for(i in seq_along(chn)) write.csv(data_out[[i]],file=paste(chn[i],"csv",sep="."))
      
    0 讨论(0)
提交回复
热议问题