Rserveを使用してrスクリプトをJavaから呼び出しています。プログラムは実行され、終了しますが、私が望むものは出力しません。私のRスクリプトでは、私は理論的には私のJavaプログラムがそれらのステートメントを印刷する必要が実行されるので、複数の印刷ステートメントがあります。しかし、私のJavaプログラムは実際のrスクリプトの内容ではなく、私のrscriptのパスを表示しています。Javaからrscriptを実行していない結果が表示されます
どうすればよいですか?スクリプトが正しく実行されているかどうかを確認するにはどうすればよいですか?
Rスクリプト:
library(Rserve)
Rserve()
print(323325)
print("Hellow world this is an R script")
print("R script ran successfully")
print("Running")
Javaプログラム:
public static void main(String[] args) throws REXPMismatchException, REngineException{
RConnection c = new RConnection();
//REXP rengine = c.eval("R.version.string");
//rengine = c.eval("source('./src/main/resources/Script/DB.R')");
//System.out.println(rengine.asString());
REXP rResponseObject = c.parseAndEval("try(eval('./src/main/resources/Script/DB.R'),silent=TRUE)");
System.out.println(rResponseObject.asString());
if (rResponseObject.inherits("try-error")) {
System.err.println("Error: " + rResponseObject.asString());
}
}
実際の出力:
./src/main/resources/Script/DB.R
希望の出力:
[1] "Hellow世界これはRスクリプトです" [1] [1]
私は私のeval文でソースを追加しました。しかし、これで私の出力は次のようになります。source( "C:¥Users¥Ruttab¥workspace¥RServe¥src¥main¥resources¥Script¥DB.R") –
いいえ、source_instead_of_ evalを使用してください。 –