在R中追加不同维度的csv文件

时间:2011-09-09 17:43:53

标签: r csv

  

可能重复:
  write.csv() a list of unequally sized data.frames

我有一个名为patients3的数据框,包含100行和129列,我使用write.csv将其写入.csv文件。

我的客户希望在此文件的开头添加几行。某些行的确切内容取决于相同数据中的变量,有些则不然。每行具有不同数量的列。第一行很简单,

FILEFORMATID 1000

我试过这段代码

line1 <- data.frame(cbind("FILEFORMATID", "1000"))


######### OUTPUT MANAGEMENT 4: WRITING FILES
write.csv(line1, paste("c:/personal/consults/ElwinWu/output", filenum, ".csv"))
write.csv(patients3, paste("c:/personal/consults/ElwinWu/output", filenum, ".csv"), quote = FALSE, append = T)

但收到了警告

  

警告信息:在write.csv(病人3,   粘贴(“c:/ personal / consults / ElwinWu / output”,:尝试设置   'append'被忽略

事实上,早先的文件被覆盖了。

这可以在R?

内完成

由于

1 个答案:

答案 0 :(得分:4)

我可以想到几种方法。一种方法是创建一个数据帧,然后将其写入CSV。这是一种痛苦。另一种方法是将数据体写入文件,然后将标题信息添加到该文件中,或者反过来写出标题信息,然后将csv体附加到该文件。

我首先尝试创建标头,然后附加csv秒。但是,要获得追加功能,您必须从write.csv()切换到write.table()

以下是一个例子:

header <- "my first line"
body <- data.frame(a=rnorm(10), b=rnorm(10))
write.table(header, file="/tmp/myfile.txt", row.names=F, col.names=F, quote=F)
write.table(body, file="/tmp/myfile.txt", row.names=F, col.names=F, append=T, sep=",")

并且,正如您所料,生成的文件如下所示:

$ cat myfile.txt 
my first line
1.23874432711773,-2.2589990017634
0.231896206292307,1.17882048865978
-0.314437880898758,0.902090923407546
1.4997037042092,0.626724662264575
0.0695743692981956,0.250950969342156
1.33403372000003,0.552648907461989
0.182234972030415,0.950754253582309
-0.0960762881273546,-0.714485753494804
-0.850532439053779,1.89170555264949
0.269472111643762,1.39531731667127