1

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

Java 和 R 之间的这种数据交换的一个典型示例是计算数字数组(例如 Javadouble[]数组)的概率分布函数 (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 以图形方式绘制。

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

4

1 回答 1

1

我能看到的最简单的实现方法是让 Java 使用类似这种简单方法这些更谨慎的方法的方法运行R。R 会将输出发送到标准输出,标准输出可以在 Java 中提取和解析。

请参阅?RscriptR 以查看从 Java 运行的系统调用的格式。

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

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

于 2012-05-23T23:05:47.143 回答