1

Rでファイルに書き込むためにシンクを使用したいとしましょう。

sink("outfile.txt")
cat("Line one.\n")
cat("Line two.")
sink()

質問 1. 最後に sink() を書いている人を見たことがありますが、なぜこれが必要なのですか? これがないと何か問題が発生する可能性はありますか?

質問 2. 各行をフォーマットする必要がある for ループを使用して、多くの行を 1 つずつファイルに書き込む最良の方法は何ですか? つまり、Python で outfile.write("Line with number %.3f",1.231) などを使用するように、各行に異なる番号が必要になる場合があります。

4

1 に答える 1

3

質問 1:関数 は、ストリームに送信されるすべてのテキストを、指定したファイル ハンドラーにsinkリダイレクトします。これは、通常はインタラクティブな R セッションに出力されるものはすべて、代わりにシンク内のファイル (この場合は "outfile.txt") に書き込まれることを意味します。引数なしで再度呼び出すと、「outfile.txt」の代わりに使用を再開するように指示されます。いいえ、最後に呼び出さなくても問題はありませんが、R セッションで再び出力を見たい場合はそれを使用する必要があります/stdoutsinksinkstdoutsink()

ただし、@Roman が指摘しているようcatに、ファイルに出力するように明示的に指示することをお勧めします。そうすれば、必要なものだけを取得し、ファイルに表示されることを期待しながら、残りの出力を R セッションで取得できます。

質問 2: これは質問 2 にも答えます。R には (私が知る限り) のような直接的なファイル処理はありませんpython。代わりにcat(..., file="outfile.txt")、 for ループ内で使用できます。

于 2013-07-17T16:21:01.617 に答える