2013-12-23 3 views
0

저는 R을 처음 접했고 JRI를 사용해 왔습니다. JRI를 통해 "eval()"함수를 사용하여 특정 결과를 얻었습니다. R 스크립트를 실행하려면 "source()"를 사용했습니다. 그러나 나는 계속해서 들어오는 데이터에 스크립트를 실행해야하는 상황에 처해있다. "source()"를 여전히 사용할 수는 있지만 성능면에서 볼 때 최적의 방법이라고는 생각하지 않습니다.JRI에서 source()를 사용하지 않고 R 스크립트를 실행

내가 한 것은 전체 R 스크립트를 메모리로 읽은 다음 스크립트를 전달하는 "eval()"을 사용하는 것이었지만 작동하지 않는 것 같습니다. 필자는 스크립트가 메모리에 올바르게로드되었는지 확인했습니다. 즉,이 스크립트 (메모리에로드 됨)를 파일에 작성하고이 새로 생성 된 파일을 소스하면 예상 된 결과가 생성되기 때문입니다.

동일한 파일을 반복해서 소싱하지 않고 메모리에서 실행하는 방법이 있습니까? 각 데이터 단위는 독립적이며 독립적으로 처리되고 사용 가능 해지 자마자 처리해야합니다. 나는 많은 데이터 유닛을 모으고 R 스크립트로 넘겨주기를 기다릴 수 없다.

나는 많은 것을 수색했으며 이것과 관련된 것을 발견하지 못했습니다. 이 방향으로 나를 도울 수있는 포인터는 정말 도움이 될 것입니다.

+0

왜 부정적인 reps? – user2940063

답변

0

나는이 다음과 같습니다 처리 방법 -

  1. 내가 함수로 전체 스크립트를 동봉.
  2. 필자는 프로그램 실행시 스크립트 파일 (현재 함수가 포함되어 있음)을 제공했습니다.

    REXP 결과 = rengine.eval ("RETVAL < - -"+ getFunctionName() + "(

  3. 내가 파일을 소싱 된 장소, 지금 바로 스크립트 자체, 즉이 들어있는 함수를 호출하고) ");

    여기에서 getFunctionName()은 스크립트가 포함 된 함수 이름의 이름을 나에게 제공합니다.

이 코드는 메모리에로드되어 사용 가능하므로 스크립트를 실행할 때마다 스크립트 파일을 제공 할 필요가 없습니다. 스크립트에 전달되는 모든 인수는 env로 수행됩니다. 변수.

이것은 해결책 인 것처럼 보이지만 내 문제를 해결합니다. 더 나은 옵션을 환영합니다.