我有一个 Rscript,它以平面文件的形式读取恒定的数据流。另一个脚本获取这个平面文件,进行一些解析和处理,然后将结果保存为 RDS 格式的 data.frame。然后它休眠,并重复该过程。
saveRDS(tmp.df, file="H:/Documents/tweet.df.rds") #saving the data.frame
在第二次...第 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
这种方法是有风险的,因为每当 RDS 打开以进行读/写时,另一个想要接触该文件的进程必须等待。随着基础文件变大,风险也会增加。
是否有类似appendRDS
(我知道字面上没有)可以实现我想要的东西 - 单个数据帧的迭代更新 - 保存到文件 - 使用追加而不是完全替换?