我有一个Rscript,它以平面文件的形式读取恒定的数据流.另一个脚本获取此平面文件,进行一些解析和处理,然后将结果保存为RDS格式的data.frame.然后它睡觉,并重复这个过程.
saveRDS(tmp.df, file="H:/Documents/tweet.df.rds") #saving the data.frame
Run Code Online (Sandbox Code Playgroud)
在第二次...第n次迭代中,我让代码只处理自上一次迭代以来添加到平面文件的新行.但是,为了将增量线附加到永久数据帧,我必须将其读入,追加,然后将其保存回来,覆盖原始数据.
df2 <- readRDS("H:/Documents/tweet.df.rds") #read in permanent
tmp.df2 <- rbind(df2, tmp.df) #append new to existing
saveRDS(tmp.df2, file="H:/Documents/tweet.df.rds") #save it
rm(df2) #housecleaning
rm(tmp.df2) #housecleaning
Run Code Online (Sandbox Code Playgroud)
这种方法存在风险,因为每当RDS打开读/写时,另一个想要触摸该文件的进程必须等待.随着基础文件变大,风险也会增加.
是否存在类似appendRDS(我知道字面上没有)的东西可以实现我想要的东西 - 迭代更新单个数据框 - 保存到文件 - 使用附加而不是完全替换?