web-dev-qa-db-ja.com

R言語system2コマンドの結果を取得できません

system2の結果を取得できません。サンプルjarファイルを実行しようとしました。

execute_system.R:

workingDir <- "C:/Code"
setwd(workingDir)
command <- "Java -jar sample.jar 674"
commandResult <- system2(command, stdout="C:/Code/stdout.txt", stderr="C:/Code/stderr.txt")
cat("commandResult: ", commandResult)

これを実行するとエラーメッセージが表示されますexecute_system.Rファイルと空のファイルが生成されます(stdout.txt、stderr.txt)

commandResult: 127
warning message: running command '"Java -jar sample.jar 674"' had status 127

System2コマンドの結果を読み取りたいので、結果データを処理する必要があります。

同じコマンドプロンプトを実行すると、適切な結果が得られます

C:/Code>Java -jar sample.jar 123
convert from String to int...
Input: 123
Value: 123
Conversion process done!!!

実際の私のJavaコード

public class Conversion{
   public static void main(String args[]){
      System.out.println("convert from String to int...");
      String input = args[0];
      System.out.println("Input: " + input );
      int value = Integer.valueOf(input)
      System.out.println("Value: " + value);
      System.out.println("Conversion process done!!!);
   }
}

このJavaプログラムを実行可能なjarファイル(sample.jar)に変換しました。

私を助けてください。前もって感謝します。

11
Jack

あなたのコードを使用して、私が次のことをしたとき、それはエラーなしで私のために働きました:

system2('Java', args = c('-jar', 'sample.jar', '123'),
         stdout = 'stdout.txt', stderr = 'stderr.txt')

これをMacOSX 10.10.5(Yosemite)で実行しました。結果は「stdout.txt」に出力されました。

system2のドキュメントから、最初のオプションは単なるコマンド(つまり、引数なし)のようです。引数はargsパラメーターで指定します。

Detailsセクションのスニペットは次のとおりです。

詳細

システムとは異なり、コマンドは常にshQuoteによって引用されるため、引数のない単一のコマンドである必要があります。

.。

11
steveb