2014-07-08 2 views
1

의 나는 내가 JVM에 R을 실행하는 데 Renjin을 사용하고R에서 함수를 만든 경우 Renjin을 사용하여 Java에서 어떻게 호출합니까?

bin <- function(arg1, arg2, arg3) { 
//some code here 
} 

같은 R에서 함수를 만들었습니다 가정 해 봅시다. 내 Java 프로그램에서 내 R 함수를 호출하고 싶습니다 bin. 나는 당신이 접근하기 위해 처음에 비슷한 것을 사용할 필요가 있다는 것을 알고있다. R

ScriptEngineManager manager = new ScriptEngineManager(); 
// create a Renjin engine: 
ScriptEngine engine = manager.getEngineByName("Renjin"); 

그러나 일단 이것이 끝나면 나의 R 기능에 얼마나 정확하게 접근 하는가? 이 기능은 별도의 파일에 저장됩니다. 내가 R 스크립트 (의이 script.R를 부르 자), 당신은

engine.eval(new java.io.FileReader("script.R")); 

사용하지만 그 인수는 파일에서 함수를 전달 허용하지 않습니다를 실행하는 것을 알고 ... 그것은 단지 전체를 실행합니다.

Java 프로그램에서 R/Renjin을 사용하여 함수를 다시 작성해야합니까? 아니면 함수를 호출하는 효율적인 방법이 있습니까?

감사합니다.

답변

2

당신이

engine.eval(new java.io.FileReader("script.R")); 

script.R 파일을 구문 분석하고 파일의 문이 글로벌 환경에서 실행되는 실행합니다. 파일이 함수 만 정의하면 실제로 호출되지 않습니다.

  1. bin를 호출, 예를 포함 script.R을 확장 :

    이 기능을 실행하기위한 몇 가지 옵션이 있습니다

    bin <- function(arg1, arg2, arg3) { 
    //some code here 
    } 
    bin(arg1 = 1, arg2 = 2, arg3 = 3) 
    
  2. script.R을 평가, 구축 및 자바 코드, 예를 들어,에서 명령을 평가

    engine.eval(new java.io.FileReader("script.R")); 
    engine.eval("arg1 <- 1; arg2 <- 2; arg3 <- 3"); 
    engine.eval("bin(arg1, arg2, arg3)"); 
    

각 옵션은 당신의 다른 수준을 제공합니다

engine.eval(new java.io.FileReader("script.R")); 

engine.eval("bin(arg1 = " + 1 + ", arg2 = " + 2 + ", arg3 = " + 3 + ")"); 
  • script.R을 평가

    다음의 bin 함수를 글로벌 환경에서 변수를 생성 및 실행 유연성, 따라서 당신은 어떤 실험을 시도해 볼 수 있습니까? 당신을 위해 가장 잘 작동합니다.

  • +0

    정말 고마워요! – monj

    관련 문제