6

R で大きなデータ フレームを JSON としてファイルに書き込む必要があります。rjson パッケージを使用しています。以下のアプローチはかなり遅いです...

for (i in 1:nrow(df)) {
      write.table(toJSON(df[i,]),"[FILENAME]",
      row.names=FALSE,col.names=FALSE,quote=FALSE,append=TRUE)
    }

だから私はこれを試しました:

write.table(toJSON(df),"FILENAME]",
            row.names=FALSE,col.names=FALSE,quote=FALSE,append=TRUE)

toJSON() は非常に長い文字列を処理できないため、これは窒息します。そのため、一度にデータ テーブルのチャンクを書き出したいと考えています。これにはどのようなアプローチが推奨されますか? 含まれている場合はsplit()、疑似コードを提供していただけますか?

4

2 に答える 2

1

最初のアプローチで非常に遅いのは、ファイルを開くたびwrite.tableにハンドルがファイルの最後に移動し、データが書き込まれ、ファイルが閉じられることです。ファイルを 1 回だけ開き、ファイル ハンドルを使用すると、はるかに高速になります。このような:

fh <- file("[FILENAME]", "w")
for (i in 1:nrow(df)) {
    write.table(toJSON(df[i,]), fh,
                row.names = FALSE, col.names = FALSE, quote = FALSE)
}
close(fh)

append = TRUEファイル接続を使用する場合は、暗示されているため(したがって必要ありません)、も削除しました。

于 2013-09-20T01:55:56.460 に答える