如何将整个数据框附加到 R 中的 CSV
Posted
技术标签:
【中文标题】如何将整个数据框附加到 R 中的 CSV【英文标题】:How to append a whole dataframe to a CSV in R 【发布时间】:2014-10-15 16:49:27 【问题描述】:我已经可以使用 cat 将一行附加到 CSV 中,这非常容易:
cat("my row, 1, 2, 3, 4", "mydf.csv",sep="\n", append=TRUE)
但据我所知,您不能将 cat 用于整个数据框(多列和多行)。
我这样做是因为我正在将许多 DF 写入 CSV,并且我想使用 write.table 附加多个 CSV。数据框都有相同的列数。
我想过在行上循环以用 cat 编写,但这听起来不是最好的方法 - 任何人都有在 R 中这样做的好方法吗?
【问题讨论】:
为什么不使用write.table
?它有一个append=TRUE
选项,您可以在第一个之后的每个data.frame 中使用col.names=FALSE
关闭列名。
@MrFlick 或fwrite( ... , append = TRUE),只需一个选项即可。
【参考方案1】:
好的,所以我意识到 append=T 确实适用于 write.table - 但 write.table 需要使用 sep 开关,所以它有效:
write.table(myDF, "myDF.csv", sep = ",", col.names = !file.exists("myDF.csv"), append = T)
【讨论】:
它确实附加了列,但不幸的是它在开始时又添加了一行并删除了我最后的观察结果。【参考方案2】:另一种解决方法(使用 cat)是转置数据帧,然后使用 rbind 附加仅包含“\n”的行,然后将此数据帧转换为向量(在每个 'row 之后都会有“\n” ') 现在将作为数据框显示在您的 csv 文件中。
下面是一个例子:
df <- rbind(t(df),"\n")
cat(c("",df),sep=",",append=TRUE)
注意:我的假设是您已经使用 sink(filepath/filename.csv) 打开了与文件的连接。
【讨论】:
【参考方案3】:如果你有足够的内存,最有效的方法是将它们全部绑定在一起然后写入文件:
df <- cbind(df1, df2, df3)
write.csv(df, "spam.csv")
否则,您可以使用write.csv
中的追加参数:
dfs <- c(df1, df2, df3)
for (df in dfs)
write.csv(df, "eggs.csv", append = TRUE)
【讨论】:
"这些包装器(write.csv
和 write.csv2
)故意不灵活:它们旨在确保使用正确的约定来写入有效的文件。尝试更改 append
、@987654327 @、sep
、dec
或 qmethod
将被忽略,并带有警告。"
Append 自 2010 年以来显然没有与 write.csv 一起使用......并不是说 R 在不可挽回地删除某些内容后警告您删除它是很有意义的......谁想出了好主意?以上是关于如何将整个数据框附加到 R 中的 CSV的主要内容,如果未能解决你的问题,请参考以下文章
如何遍历数据框,将新字段添加到系列,然后将该系列附加到 csv?