Запуск R из терминала через Java - PullRequest
1 голос
/ 29 апреля 2011

Я пытаюсь запустить R, используя Java. На моем Mac установлен R, и я много раз использовал его с терминала.

В терминале для запуска R достаточно просто набрать «R»

Ex:

 Macintosh-11:Desktop myname$ R

R version 2.12.2 (2011-02-25)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> 

Итак, я хотел бы запустить R через Java, через терминал. Итак, я написал себе класс Java:

public class javar {

        public static void main(String[] args) throws Exception {
                Runtime.getRuntime().exec("R");
        }
}

Однако, когда я компилирую, а затем выполняю, используя

java javar

Я не вижу R начала. Я просто вижу, как программа завершает выполнение, а затем терминал готов к другой команде.

Как мне добиться того, что я пытаюсь сделать?

1 Ответ

3 голосов
/ 06 июня 2011

Когда я столкнулся с вашей проблемой, я использовал JRI , который не только создает R / Java-соединение, но и позволяет обмениваться матрицами и векторами между ними.

Хотя я не предлагаю этого, ваш подход может работать, но R не "зависнет" после того, как вы запустите его, он просто ничего не выполнит и завершит работу.Попробуйте добавить параметр «--vanilla» и, очевидно, добавить к нему некоторый код, указав --file = yourScript.R и, в конце концов, аргументы, используя --args

public class javar {

        public static void main(String[] args) throws Exception {
                Runtime.getRuntime().exec("R --vanilla --file=yourScript.R");
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...