46
puts "hi"
puts "bye"

これまでのコードの STDOUT を保存したい (この場合、こんにちは \nbye 変数に 'result' と言って、それを出力します)

puts result

私がこれを行っている理由は、R コードを Ruby コードに統合したためです。その出力は、R コードの実行時に STDOUT に渡されますが、コード内で出力にアクセスしていくつかの評価を行うことはできません。これが紛らわしい場合は申し訳ありません。したがって、「puts result」行はこんにちはとさようならを与えるはずです。

4

9 に答える 9

9

プロジェクトでアクティブなサポートが利用できる場合は、次のことを行うことができます。

output = capture(:stdout) do
  run_arbitrary_code
end

についての詳細Kernel.captureこちら

于 2014-07-01T09:05:29.980 に答える
8

これを行うには、次のようにバックティック内で R スクリプトを呼び出します。

result = `./run-your-script`
puts result  # will contain STDOUT from run-your-script

Ruby でサブプロセスを実行する方法の詳細については、この Stack Overflow questionを確認してください。

于 2013-02-20T18:35:39.093 に答える
0

RinRuby の場合、R には次の機能があることを知っておいてくださいcapture.output

R.eval <<EOF
captured <- capture.output( ... )
EOF

puts R.captured 
于 2019-01-05T18:24:20.777 に答える
-2

@girasquidの回答に感謝します。私はそれを単一のファイルバージョンに変更しました:

def capture_output(string)
  `echo #{string.inspect}`.chomp
end

# example usage
response_body = "https:\\x2F\\x2Faccounts.google.com\\x2Faccounts"
puts response_body #=> https:\x2F\x2Faccounts.google.com\x2Faccounts
capture_output(response_body) #=> https://accounts.google.com/accounts
于 2016-09-28T10:26:43.830 に答える