[英]Need to pass Arraylist from java program to R script as a parameter
I have simple java program which reads data from csv file and validate the data then call the R script to calculate the average of list of values, i'm using Renjin to call R program. I have simple java program which reads data from csv file and validate the data then call the R script to calculate the average of list of values, i'm using Renjin to call R program. I am able to call R script without passing parameter but here i need to pass list of values to my R script.
我可以在不传递参数的情况下调用 R 脚本,但在这里我需要将值列表传递给我的 R 脚本。
Here is my java code:这是我的 java 代码:
// listofval --list of float values example listofval= [3.3,5.2,6,9]
RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine();
engine.put("input",listofval);
engine.eval(new java.io.FileReader("avg.R"));
Here is my Rscript:这是我的脚本:
args=(commandArgs(TRUE))
args <- eval(parse(text=args[1]))
input <- args
customMean <- function(vector) {
mean(vector)
}
result.mean<- customMean(input)
print(result.mean)
I'm looking for work around, Can someone please help me on this?我正在寻找工作,有人可以帮助我吗?
Thanks in advance.提前致谢。
You can try passing arguments to your engine using sessions in java.您可以尝试使用 java 中的会话将 arguments 传递给您的引擎。
Please customize and/or try the following logic.请自定义和/或尝试以下逻辑。
Session session = new SessionBuilder()
.withDefaultPackages()
.build();
session.setCommandLineArguments("/usr/bin/renjin", "X", "Y", "--args", "Z");
RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
RenjinScriptEngine engine = factory.getScriptEngine(session);
engine.eval("print(commandArgs(trailingOnly = FALSE))");
engine.eval("print(commandArgs(trailingOnly = TRUE))");
I was able to resolve my issue, hope it could help someone.我能够解决我的问题,希望它可以帮助某人。 In R script we need to remove below line so that program is not expecting command line argument.
在 R 脚本中,我们需要删除下面的行,以便程序不需要命令行参数。
args=(commandArgs(TRUE))
args <- eval(parse(text=args[1]))
input <- args
In java program i have saved my argument as input, in R environment it will be accessed as input在 java 程序中,我已将我的参数保存为输入,在 R 环境中,它将作为输入访问
engine.put("input",listofval);
Final Rscript:最后的脚本:
customMean <- function(vector) {
return mean(vector)
}
result.mean<- customMean(input)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.