将多个R脚本运行的结果写入单个输出csv文件

时间:2014-09-26 08:53:25

标签: r csv append write.table

我编写了一个R脚本,用作基于shell脚本的管道的一部分,它将一个接一个地将包含基因序列数据的数十个文件提供给R脚本(使用args[])。 / p>

我无法找到将此脚本的每次运行结果写入单个结果文件的方法。我认为最简单的方法可能是创建一个空的results.csv表,然后让脚本在每次运行时写入该文件的下一行(保存脚本直接写在文件上的问题)每次运行)。在这方面,一位朋友帮我解决了以下代码:

x<-readLines("results.csv")

if(x[[1]]==""){x[[1]]<-paste("meancoscore", "meanboot", "CIres", "RIres", "RC",  "nodecount", sep= ",")}

x[[length(x)+1]]<-paste(meancoscore, meanboot, CIres, RIres, RC, nodecount, sep = ",")
x<-data.frame(x)
write.table(x,"results.csv", row.names = F, col.names = F, sep = ",")

在上面的代码&#34; meancoscore&#34;,&#34; meanboot&#34;,&#34; CIres&#34;,&#34; RIres&#34;,&#34; RC&#34 ;和&#34; nodecount&#34;如果数据框在第一行没有任何内容,则首先用作标题。

在此之后结果(对象:meancoscore,meanboot,CIres,RIres,RC和nodecount写在与其标题对应的列中。这里的想法是,如果再次使用不同的源文件运行R脚本,它应该只是将结果写入results.csv文件中的下一行。

但是,在使用不同输入文件运行此代码三次后,results.csv文件中会出现以下内容:

"\""\\""meancoscore,meanboot,CIres,RIres,RC,nodecount\\""\""
""\""\\""0.000,76.3247863247863,0.721002252252252,0.983235214508053,0.708914804154032,117\\""\""
""\""0.845,77.6923076923077,0.723259762308998,0.983410513459875,0.711261254217159,117\""
""0.85,77.4358974358974,0.728886344116805,0.983878381369061,0.717135516451654,117"

我希望得到的结果如下:

meancoscore,meanboot,CIres,RIres,RC,nodecount
0.000,76.3247863247863,0.721002252252252,0.983235214508053,0.708914804154032,117
0.845,77.6923076923077,0.723259762308998,0.983410513459875,0.711261254217159,117
0.85,77.4358974358974,0.728886344116805,0.983878381369061,0.717135516451654,117

值得注意的是,每个连续的乐趣似乎都是在results.csv文件中添加更多的反斜杠和更多的引号。

理想情况下,我希望能够在完成后简单地读入results.csv文件,并通过访问results$meanbootsummary(results$meanboot)的列来分析数据。

有人可以提供一些关于如何修改上述代码或提供替代解决方案的建议吗?

我应该在这里添加,我故意没有选择在R脚本中写入一个循环,它将运行感兴趣的输入文件,并简单地将一个完整的结果表组合为一个对象(我知道这个写出来很简单)。这是因为此脚本正在完成的工作将被集中到群集中的多台计算机上。

感谢您的时间和任何可能提供的帮助。

1 个答案:

答案 0 :(得分:0)

根据voidHead的怀疑,将问题quote = FALSE添加到write.table()来解决问题。

相关问题