R では、 を使用してパイプ接続を開き、pipe()
それに書き込むことができます。次の状況を観察しましたが、よくわかりません。python
たとえば、パイプを使用してみましょう。
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)
私が期待していたのは、出力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)
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
エンジンです。Python のようなインタープリター言語の場合、永続的な「ターミナル」を開いてコードを書き続け、そこから出力を取得できるようにしたいと考えています。pipe()
ただし、正しい方法かどうかはわかりません。