如何将整个数据帧附加到R中的CSV

时间:2014-08-21 22:08:56

标签: r csv dataframe

我已经可以使用 cat 在CSV中添加一行,这非常简单:

  cat("my row, 1, 2, 3, 4", "mydf.csv",sep="\n", append=TRUE)

但据我所知,你不能将cat与整个数据帧(多列和多行)一起使用。

我这样做是因为我正在为CSV编写许多DF,并且我想使用 write.table 附加多个CSV。数据帧都具有相同的列数。

我想过用行写一个循环用cat来写但这听起来不是最好的方法 - 任何人都有很好的方法在R中这样做吗?

3 个答案:

答案 0 :(得分:10)

好的,所以我意识到append = T确实可以使用write.table - 但是write.table需要使用sep开关才能使用,这样就可以了:

write.table(myDF, "myDF.csv", sep = ",", col.names = T, append = T)

答案 1 :(得分:1)

另一种解决方法(使用cat)是转置数据框,然后追加仅包含&#34; \ n&#34;的行。使用rbind,然后将这个数据帧转换为一个向量(它将在&#34; \ n&#34;在每一行&#39;之后),现在将在你的csv文件中显示为数据帧。< / p>

以下示例:

df <- rbind(t(df),"\n")
cat(c("",df),sep=",",append=TRUE)

注意:我的假设是您使用接收器( filepath / filename.csv )打开了与文件的连接。

答案 2 :(得分:0)

如果你有足够的内存,最有效的方法是将它们全部绑定在一起,然后写入文件:

df <- cbind(df1, df2, df3)
write.csv(df, "spam.csv")

否则,您可以使用write.csv中的append参数:

dfs <- c(df1, df2, df3)
for (df in dfs){
  write.csv(df, "eggs.csv", append = TRUE)
}