将行追加到R中的数据帧文件

将行追加到R中的数据帧文件,r,R,我有一个函数,它在每次迭代时生成一个新行并将其附加到data.frame 我需要在每次迭代后将data.frame保存在磁盘上。但是,我不想每次都存储所有的data.frame,这会耗费时间和资源,我只想在data.frame文件中添加新行 我使用了write.table()和append=true但是我的列名被重复了。此外,行的id始终保持为1。为什么不尝试将数据帧保留在内存中,直到函数完成其迭代,然后只写入数据帧一次呢。要向数据帧添加行,可以使用rbind(ds,row) 其中ds是数据帧,

我有一个函数,它在每次迭代时生成一个新行并将其附加到
data.frame

我需要在每次迭代后将
data.frame
保存在磁盘上。但是,我不想每次都存储所有的
data.frame
,这会耗费时间和资源,我只想在
data.frame
文件中添加新行


我使用了
write.table()
append=true
但是我的列名被重复了。此外,行的id始终保持为1。

为什么不尝试将数据帧保留在内存中,直到函数完成其迭代,然后只写入数据帧一次呢。要向数据帧添加行,可以使用
rbind(ds,row)
其中ds是数据帧,row是数据行。R中的rbind函数将新行绑定到数据帧


如果您必须在每次迭代后将数据写入磁盘,您可以尝试使用
append=true

将数据帧先处理然后保存,但我想您有自己的理由。一步一步地处理数据帧当然要慢一些,但我想您已经意识到了这一点。如果需要逐行处理,可以使用如下结构:

sink("output.txt")  #open a sink file, will be created in your working directory
                    #if it does not exist yet
for(i in 1:n){
  df[i,]<-operations(input)   #create the next data frame row
  cat(df[i,])                 #save that row to output.txt
  cat('\n')                   #create a new line (for the next df-row)
}

sink() #closes your sink file
sink(“output.txt”)#打开一个sink文件,将在您的工作目录中创建
#如果它还不存在的话
for(1:n中的i){

df[i,]使用
sink
有点麻烦,会使调试更加困难-我强烈建议不要这样做。只需打开一个普通文件并将其传递给
cat
。(您甚至不需要打开文件,只需将文件名传递给
cat
,以及
append=TRUE
参数就足够了,但这可能要慢得多。)非常感谢您的评论,我不知道-调试时会遇到什么样的问题?您知道这些问题的原因吗?问题是,在通过调用
sink()恢复输出重定向之前
,控制台上不会显示任何内容。因此,如果您试图调试循环,则无法直观地检查任何值。原因是我的函数需要花费大量时间才能继续运行,并且可能会被破坏,因此为了恢复/恢复崩溃的会话,我希望将数据保留在磁盘上。很抱歉,回复太晚。在写入每个ti之间,有一个中间方法我&只写一次将是:在循环中,每1000次计数,记一次,比如说
:[写入文件,清除数据帧,清除计数]
。这将为您节省大量时间