R из Java

Что лучший способ состоит в том, чтобы назвать функциональностью R из Java?

Я ищу быстрый, легкий и надежный способ сделать стандартные 2-е диаграммы рассеяния и гистограммы в R использованием моих JAVA-приложений. Я задавался вопросом, какие пакеты/интерфейсы, которые подошли в быстром поиске Google, будут самыми удобными для использования.

Я с нетерпением жду Ваших предложений!

15
задан wtouw 1 February 2010 в 21:32
поделиться

2 ответа

Использование JRI: http://www.rforge.net/jri/ . Он приходит в комплекте с Rjava, включая некоторые примеры использования.

Очень простой пример будет таким:

import java.io.*;
import java.awt.Frame;
import java.util.Enumeration;

import org.rosuda.JRI.Rengine;
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.RVector;
import org.rosuda.JRI.RMainLoopCallbacks;

public class rJavaTest {

    public static void main(String[] args) {

        Rengine re=new Rengine(args, false, new TextConsole());
        REXP x;
        re.eval("print(1:10/3)");
        System.out.println(x=re.eval("iris"));
        RVector v = x.asVector();
        if (v.getNames()!=null) {
            System.out.println("has names:");
            for (Enumeration e = v.getNames().elements() ; e.hasMoreElements() ;) {
                System.out.println(e.nextElement());
            }
        }

        if (true) {
            System.out.println("Now the console is yours ... have fun");
            re.startMainLoop();
        } else {
            re.end();
            System.out.println("end");
        }
    }
}
16
ответ дан 1 December 2019 в 02:55
поделиться

Я обнаружил, что весьма эффективным является форкирование R как процесса, присоединение к потокам stdin, stdout и stderr процесса, а также отправка команд R через входной поток. Я использую файловую систему для связи между R и моим Java процессом. Таким образом, я могу иметь несколько процессов R, запущенных из разных потоков Java, и их окружения не конфликтуют друг с другом.

2
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: