【问题标题】:Appending csv files of different dimension in R [duplicate]在R中附加不同维度的csv文件[重复]
【发布时间】:2011-09-09 17:43:53
【问题描述】:

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

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

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

文件格式 ID 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(patients3, paste("c:/personal/consults/ElwinWu/output", : 尝试设置 '追加'被忽略

确实,之前的文件已被覆盖。

这可以在 R 中完成吗?

谢谢

【问题讨论】:

标签: r csv


【解决方案1】:

我能想到几种方法。一种是创建单个数据框,然后将其写入 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

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多