我有一个.csv文件,里面有不同染色体的数据。染色体名称存储在第一列(列名: Chr)。我的目标是分离每个染色体的数据,即(Chr1,Chr2等),并为每个染色体创建单独的csv文件。我不明白如何在有限的步骤中做到这一点。谢谢
发布于 2011-11-15 04:26:22
演示使用plyr
和dataset iris
的单行程序
plyr::d_ply(iris, .(Species), function(x) write.csv(x,
file = paste(x$Species, ".csv", sep = "")))
发布于 2011-11-15 04:01:04
fn <- dir(pattern="csv") data_in <- do.call(rbind,lapply(fn,按染色体排列)
拆分<- data_out (data_in,data_in[1])
chn <- unlist(lapply(data_out,"[",1,1)) for(i in seq_along(chn)) write.csv(data_out[i],file=paste(chni,"csv",sep="."))
发布于 2011-11-15 04:07:41
一种方法是一次读取一行输入文件,并根据该行的前x个字符将该行附加到正确的输出文件中:
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)
}
这种方法的优点是,即使yourInputFile太大而无法读取到内存中,它也能正常工作。缺点是这种方法很慢,因为它做了大量的文件打开/关闭。
https://stackoverflow.com/questions/8126984
复制相似问题