フラットファイルの形式で一定のデータストリームを読み込んでいるRscriptがあります。別のスクリプトがこのフラットファイルをピックアップし、解析と処理を行い、その結果をdata.frameとしてRDS形式で保存します。その後、眠り、そのプロセスを繰り返す。第... n番目の反復で既存のデータフレーム(RDS)に新しいデータを追加R
saveRDS(tmp.df, file="H:/Documents/tweet.df.rds") #saving the data.frame
、私は、コードは、新しい行が前の反復以降フラット・ファイルに追加し、処理しています。ただし、デルタラインを永久データフレームに追加するには、それを読み込んで追加してから元に上書きして保存する必要があります。
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
(私は文字通りそうではないことを知っています)私は、ファイルに保存された単一データフレームの反復更新を実現できますか?完全置換ではなく追加を使用しますか?
まず、あなたは悪いことをしていると思います。以前のデータを上書きして、以前のバージョンを効果的に削除します。つまり、既存のドキュメントに追加できるwrite.tableを使用してテキスト形式(CSVなど)でデータを保存するだけではどうですか? –
私は実際には、前のデータのコピーを最新のレコードに上書きしています。うまくいけば、古いものを読み、新しいものを追加し、古いものと古いものを上書きする、プロセスの2番目のブロックがうまくいくことを望みます。 これで、write.tableのappendオプションが表示されます。私はそれが処理のオーバーヘッドを増加させると思ったので、非ネイティブフォーマットから離れていました。しかし、より良い安定性のために、そのステップで少し非効率的な取引をしても問題ありません。 –
?serializeでいくつかの魔法を使って追加機能を作成できるのだろうかと思います。 –