Rでは、pipe()
を使用してパイプ接続を開いて書き込むことができます。私は次のような状況をよく理解していませんでした。のは、例えばpython
パイプを使用してみましょう:Rでパイプ接続を閉じる前にパイプ接続から出力を得るには?
print()
からの出力は、直ちにRコンソールに表示されましたが、実際には、出力は私がパイプ接続を閉じた後にのみ付属している私は何を期待していた
z = pipe('python', open='w+')
cat('x=1\n', file=z)
cat('print(x)\n', file=z)
cat('print(x+2)\n', file=z)
cat('print(x+2\n', file=z)
cat(')\n', file=z)
close(z)
> z = pipe('python', open='w+')
>
> cat('x=1\n', file=z)
> cat('print(x)\n', file=z)
> cat('print(x+2)\n', file=z)
> cat('print(x+2\n', file=z)
> cat(')\n', file=z)
>
> close(z)
1
3
3
私の質問は、どうすれば接続を閉じる前に出力を得ることができるのですか?どちらか、それはcapture.output()
を使用して出力をキャプチャすることは可能であると思わないことに注意してください:
> z = pipe('python', open='w+')
>
> cat('x=1\n', file=z)
> cat('print(x)\n', file=z)
> cat('print(x+2)\n', file=z)
> cat('print(x+2\n', file=z)
> cat(')\n', file=z)
>
> x = capture.output(close(z))
1
3
3
> x
character(0)
この質問の背景がknitr
enginesです。 Pythonのようなインタプリタ言語では、永続的な "ターミナル"を開いてコードを書いて、そこから出力を得ることができればいいと思います。私はpipe()
が正しい方法であるかどうか分からない。