【问题标题】:Java/R Interface (JRI) code for exchanging data (e.g., PDF values)用于交换数据(例如 PDF 值)的 Java/R 接口 (JRI) 代码
【发布时间】:2012-03-05 03:56:17
【问题描述】:

是否可以在 R 中使用 Java 程序的输入进行一些简单的计算,并将响应输入到该 Java 程序中?

Java 和 R 之间的这种数据交换的一个典型示例是计算数字数组(例如 Java double[] 数组)的概率分布函数 (PDF)。

在 Java 类中,数组应该通过 Java/R 接口 (JRI) 传递给 R,并且计算的结果不应该是图形(就像 JRI 在 JFrame 中所做的那样),而是另一个数组可以从同一个 Java 类中检索到的值(或类似的 Java 数据结构)以供进一步处理。

JRI 分配部分如下所示:

Rengine re=new Rengine(new String [] {"--vanilla"}, false, null);

if (!re.waitForR())
{
    System.out.println ("Cannot load R");
    return;
}

double[] values = ... // The data values

re.assign("data", values);

因此,问题是上面的data 数组是否可以在 R 中处理,如已经描述的那样(例如,对于 PDF),结果返回给调用 Java 类,而不是由 R 以图形方式绘制。

这可能吗?如果可以,是否有任何示例代码演示它?

【问题讨论】:

    标签: java r jri


    【解决方案1】:

    我能看到的最简单的实现方法是让 Java 使用 this simple methodthese more careful methods 之类的方法运行 R。 R 会将输出发送到标准输出,标准输出可以在 Java 中提取和解析。

    查看 R 中的 ?Rscript 以查看从 Java 运行的系统调用的格式。

    一种更强大的方法(我使用过的一种)通过使用 Java(或您正在使用的任何其他程序)将 R 命令和数据保存到一个或多个文本文件(可能是一个 script.R 和一个或更多 data1.tab 文件),在 R 脚本文件中调用 R 读取,在 R 中将结果保存到文本文件,然后让 Java(或其他)读取结果并进行清理。当然,这里的缺点是速度。如果你可以让内联方法(stdin/stdout)为你工作,它会快很多。

    虽然这并没有将您指向 JRI,但在 Java(或其他)中编写一些为任意 R 代码和一组自动生成的 Java 向量/矩阵提供此类接口的函数将非常容易使用为 R 函数 ?dump 指定的格式在脚本中传递给 R。

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 2013-10-06
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      相关资源
      最近更新 更多