본문 바로가기

R

JRI Java R Interface

1. R 이란


R 프로그래밍 언어(줄여서 R)는 통계 계산과 그래픽을 위한 프로그래밍 언어이자 소프트웨어 환경이다. 뉴질랜드 오클랜드 대학의 로스 이하카와 로버트 젠틀맨에 의해 시작되어 현재는 R 코어 팀이 개발하고 있다. R은 GPL 하에 배포되는 S 프로그래밍 언어의 구현으로 GNU S라고도 한다. R은 통계 소프트웨어 개발과 자료 분석에 널리 사용되고 있으며, 패키지 개발이 용이하여 통계학자들 사이에서 통계 소프트웨어 개발에 많이 쓰이고 있다.(위키백과 발췌)


2. R 설치 및 환경 세팅


2.1 R 설치

R은 공개 소프트웨어로 http://www.r-project.org/ 에서 다운로드 받아 설치가 가능하다.

Ubuntu 사용하고 있다면 apt-get으로 아래와 같이 설치하면 된다.


y2kpooh@pooh:~$ sudo apt - get install r - base


설치 후 터미널 창에서 R 명령어를 이용하면 R Console창으로 실행가능하다.

y2kpooh@pooh:~$ R


R version 2.15.1 (2012-06-22) -- "Roasted Marshmallows"

Copyright (C) 2012 The R Foundation for Statistical Computing

ISBN 3-900051-07-0

Platform: x86_64-pc-linux-gnu (64-bit)


R은 자유 소프트웨어이며 완전하게 무보증입니다.

일정한 조건에 따라 자유롭게 이것을 재배포 할 수 있습니다.

배포조건에 대한 상세설명은 'license()' 혹은 'licence()' 라고 입력해주세요


R는 많은 기여자들에 의한 공동프로젝트입니다.

더 자세한것에 대해서는 'contributors()'라고 입력해 주십시오.

또한, R 혹은 R 패키지를 인용하는 형식에 대해서는 알고싶으시다면 'citation()'라고  입력해주십시오


'demo()' 라고 입력하면, 몇가지 데모를 볼 수 있고, 'help()' 를 입력하게 되면 온라인 도움말을 볼 수 있습니다.

'help.start()' 를 입력하면 HTML 브라우저에 의한 도움말이 보여집니다.

'q()'라고 입력하면 R를 종료합니다


>


간략한 R 명령어 사용 예

(R언어의 대하여 자세한게 알고 싶다면 R을 이용한 데이터 분석 실무 참조 )

> print("Hello R")

[1] "Hello R"

> 1:10

[1]  1  2  3  4  5  6  7  8  9 10


2.2 rJava

Java와 R간의 인터페이스를 위하여 JRI(이하 rJava)를 설치한다.


2.2.1 rJava 란

JRI는 단일 스레드로 Java 애플리케이션에서 R을 실행할 수있는 Java / R 인터페이스다. 기본적으로 Java에 R 동적 라이브러리를 로드하고 R 기능에 Java API를 제공합니다. R의 기능과 전체 실행 REPL에 대한 간단한 호출을 모두 지원한다.

(http://www.rforge.net/JRI/)


2.2.2 rJava 설치

rJava 설치

y2kpooh@pooh:~$ aptitude install r-cran-rjava

환경변수 세팅

y2kpooh@pooh:~$ export R_HOME=/usr/lib/R

y2kpooh@pooh:~$ export CLASSPATH=.:/usr/lib/R/site-library/rJava/jri/

y2kpooh@pooh:~$ export LD_LIBRARY_PATH=/usr/lib/R/site-library/rJava/jri/


2.3 Eclipse 세팅


2.3.1 Java Application 빌드세팅

VM arguments : -Djava.library.path=/usr/lib/R/site-library/rJava/jri/ 추가


Environment R_HOME 추가


2.3.2 Maven 빌드세팅

VM arguments : -Djava.library.path=/usr/lib/R/site-library/rJava/jri/ 추가

Environment R_HOME 추가


2.3.3 JRI dependency 추가

<dependency>

<groupId>org.nuiton.thirdparty</groupId>

<artifactId>JRI</artifactId>

<version>0.8-4</version>

</dependency>


위와 같이 세팅을 하게 되면 이제 이클립스에서 rJava를 이용하여 R을 실행할 수 있다.


3. rJava Coding

(http://www.rosuda.org/R/nightly/JavaDoc/)

rJava를 이용한 간략한 실행 클래스이다 해당 클래스 생성 후 Run As -> Java Application 실행하면

아래 Result console화면에서 실행된 데이터를 확인 할 수 있다.

Example.java

import org.rosuda.JRI.Rengine;

import org.rosuda.JRI.REXP;


public class Example {

    public static void main (String[] args)

    {

         System.out.println("Creating Rengine (with arguments)");

         String[] Rargs = {"--vanilla"};

         Rengine re = new Rengine(Rargs, false, null);

         System.out.println("Rengine created, waiting for R");


         if (!re.waitForR()) {

              System.out.println("Cannot load R");

return;

         }


         REXP rn = re.eval("rnorm(4)");

         double[] rnd = rn.asDoubleArray();


         for(int i=0; i<rnd.length; i++){

              System.out.print(rnd[i] + " ");

         }

         System.out.println();


         re.end();

         System.out.println("Bye.");

   }

}


Result console

Creating Rengine (with arguments)

Rengine created, waiting for R

-0.4895186412991081 0.9995073716724703 -1.3400294093157445 -1.6906407959968786

Bye.

'R' 카테고리의 다른 글

R을 이용한 중심극한정리  (3) 2013.08.02
rChart  (0) 2013.06.13
[JRI] R Parsing data.frame to JSON  (1) 2013.06.11