简体   繁体   English

需要将 Arraylist 从 java 程序传递给 R 脚本作为参数

[英]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)

传安 ArrayList<customobject> 到接受 ArrayList 作为参数的 function<object> 在 Java<div id="text_translate"><p> 我正在编写一个通用的 java-android function,它将接受ArrayList<Object>作为其参数之一,这样我就可以在我的整个应用程序中使用,而不管 ArrayList 元素的类型如何。</p><p> 这是我的 function:</p><pre> public GenericDisplayAdapter(Activity activity, ArrayList<Object> arrData) { this.m_ArrData = arrData; inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); }</pre><p> 当我尝试将我的ArrayList<CustomObject>作为参数传递给此 function 时,出现错误“无法从ArrayList<CustomObject>转换为ArrayList<Object> ”,</p><pre> m_LVStructDamageHeader.setAdapter(new GenericDisplayAdapter( (Activity)this, (ArrayList<Object>)arrStructDamageHeaders));</pre><p> 处理这种情况的最佳方法是什么,谢谢</p></div></object></customobject> - Pass An ArrayList<CustomObject> to a function that accepts as parameter an ArrayList<Object> in Java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在 Java 中将 ArrayList 作为参数传递 - Pass ArrayList as parameter in Java 如何在Java程序中将参数传递给Shell脚本 - How to pass parameter to shell script in java program 将参数从数组传递到Powershell Java程序 - Pass parameter from array to powershell java program 无法从java程序执行R脚本? - not able to execute R script from java program? 如何将数组列表从Java传递到R并进行数据质量检查? - How to pass arraylist from Java to R and do data quality check? 传安 ArrayList<customobject> 到接受 ArrayList 作为参数的 function<object> 在 Java<div id="text_translate"><p> 我正在编写一个通用的 java-android function,它将接受ArrayList<Object>作为其参数之一,这样我就可以在我的整个应用程序中使用,而不管 ArrayList 元素的类型如何。</p><p> 这是我的 function:</p><pre> public GenericDisplayAdapter(Activity activity, ArrayList<Object> arrData) { this.m_ArrData = arrData; inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); }</pre><p> 当我尝试将我的ArrayList<CustomObject>作为参数传递给此 function 时,出现错误“无法从ArrayList<CustomObject>转换为ArrayList<Object> ”,</p><pre> m_LVStructDamageHeader.setAdapter(new GenericDisplayAdapter( (Activity)this, (ArrayList<Object>)arrStructDamageHeaders));</pre><p> 处理这种情况的最佳方法是什么,谢谢</p></div></object></customobject> - Pass An ArrayList<CustomObject> to a function that accepts as parameter an ArrayList<Object> in Java 从Java程序将图像作为参数传递给php脚本 - Passing image as a parameter to a php script from a java program 无法将值从Bash脚本传递到Java程序 - Cannot Pass Values from Bash Script to Java Program 将ArrayList作为参数传递给类中的StoredProcedure - Pass an ArrayList as parameter to StoredProcedure from a class 如何将数据从java传递给python脚本作为参数 - How to pass data from java to python script as parameter
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM