"对于"循环比使用write.table时覆盖

时间:2013-08-12 09:46:34

标签: arrays r loops filenames overwrite

我试图从数组中提取每两个连续的列,每对写一个.dat。问题是,当使用write.table()时,它会覆盖文件。当我使用print()而不是write.table()时,它会显示正确的子集。

我还需要文件名来显示所选列对的数量(总共6对),以及维度的数量(从1到5)。为此,我使用了一个更简单的解决方案,例如标记1:30。

for(i in 0:5) {
  for (j in 1:5) {
    for (k in 1:30) {
      filename <- paste("Component",k, ".dat", sep="")
      write.table(data[,c(2*i+1,2*i+2),j],col.names=F, row.names=F, sep= " ")    
    } 
  }
}

任何提示为什么它不起作用? 我希望我的目标是可以理解的。非常感谢你的时间!

1 个答案:

答案 0 :(得分:2)

将参数append设置为TRUE

write.table(data[,c(2*i+1,2*i+2),j], 
            file=filename, 
            append=TRUE,
            col.names=F, 
            row.names=F, 
            sep= " ")

另外,正如@Roland正确指出的那样,你忘记了传递文件参数(已在上面的例子中添加)。