在R循环中写入带有两列的CSV文件(追加)

时间:2015-07-14 11:06:45

标签: r csv

我有一些其他复杂的脚本工作正常,除了给写csv文件带来麻烦。让我们在这里说一个例子,我希望k和j在这里存在20行,k在一列中,j在第二列中。

for (i in 1:20)
{
    k = i+2;
    j = i+20;
    m= data.frame(k,j)
    write.csv(m,file="Dummy.csv",append=TRUE)
    print(m)
}

问题是,它只是将m的最终值写入csv,即使将append设置为TRUE

我的问题是,我是否需要将'm'作为数据框,矩阵或向量?

(考虑k和j是特别改变的文本字符串,我试图在从语料库中提取的CSV中使用)

以下是CSV文件的输出:

“”, “K”, “J” “1”,22,40

1 个答案:

答案 0 :(得分:2)

您无法将append = TRUEwrite.csv一起使用。这个想法是,应该很难弄清楚write.csv并做一些你不想做的事情。

您可以将其与write.table一起使用,并提供此解决方案:

for (i in 1:20)
{
  k = i+2;
  j = i+20;
  m = data.frame(k,j)
  write.table(m, file="Dummy.csv",
              append=TRUE,
              col.names = FALSE,
              sep = ',')
  print(m)
}

请注意,您有错过的列名,否则您会在循环的每次迭代中添加列名。

但是,更好的想法是在部分中构建数据帧并在最后将其写入csv。

m <- data.frame(NULL)
for (i in 1:20)
{
  k <- i+2;
  j <- i+20;
  m <- rbind(m, data.frame(k,j))
}

write.csv(m, file="Dummy2.csv")