我正在使用Rserve從java調用r腳本。該程序運行並終止,但不輸出我想要的。在我的R腳本中,我有多個打印語句,所以理論上當我的java程序運行時,它應該打印這些語句。但是我的java程序正在打印我rscript的路徑,而不是實際的r腳本內容。從java運行rscript不顯示任何結果
我該怎麼辦?我如何知道我的腳本是否正確運行?
ř腳本:
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] 「R腳本成功運行」 [1] 「運行」
我在eval語句添加源。但是現在它給了我這樣的輸出:source(「C:\ Users \ Ruttab \ workspace \ RServe \ src \ main \ resources \ Script \ DB.R」) –
不,您應該使用source_instead_of_ eval。 –