如何在R中的循环中将多个数据帧写入单个csv文件?

时间:2014-11-17 07:40:55

标签: r csv

我想在一个CSV文件中写一个多数据帧“neighbours_dataframe”:

我使用此行将多个数据帧写入多个文件:

for(i in 1:vcount(karate)){
write.csv(neighbours_dataframe[[i]], file = as.character(V(karate3)$name[i]),row.names=FALSE)}

如果我使用此代码:

for(i in 1:vcount(karate)){
write.csv(neighbours_dataframe[[i]], file = "karate3.csv",row.names=FALSE)}

这只会给我csv文件中的最后一个数据帧:

我想知道,我怎么能拥有一个单独的CSV文件,其中所有数据帧的方式是第一个数据帧的列标题只是写入csv文件而所有其他数据帧都以连续方式复制?

提前谢谢

1 个答案:

答案 0 :(得分:2)

两种方法;如果neighbours_dataframe是一个很长的列表,那么第一个可能会快一点(尽管我没有测试过这个)。

方法1:首先将数据框列表转换为单个数据框

按照jbaums的建议。

library(dplyr)
neighbours_dataframe_all <- rbind_all(neighbours_dataframe)
write.csv(neighbours_dataframe_all, "karate3.csv", row.names = FALSE)

方法2:使用循环,追加

正如Neal Fultz所说。

for(i in seq_along(neighbours_dataframe))
{
  write.table(
    neighbours_dataframe[[i]], 
    "karate3.csv", 
    append    = i > 1, 
    sep       = ",", 
    row.names = FALSE,
    col.names = i == 1
  )
}