Я разработал код Java, используя JRI для выполнения кода R на Java. Теперь я столкнулся с проблемой (выбирая различные значения в столбце фрейма данных), где я должен использовать пакет sqldf из R и пытаюсь использовать его функцию в своем Java-коде. Вот пример кода (Orange является набором данных уже присутствует в R по умолчанию):Вызов sqldf пакета R в Java с использованием JRI
public class RCode2 {
public static JRIEngine re;
private static org.rosuda.REngine.REXP rexp;
public RCode2()
{
try {
re = new JRIEngine(new String [] {"--vanilla"});
} catch (REngineException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Rengine created, waiting for R");
}
public static void main(String[] args) {
RCode2 rCode2= new RCode2();
rCode2.testSqldf();
re.close();
}
public void testSqldf(){
rexp=re.parseAndEval("library(sqldf,lib.loc=\"C:/Program Files/R/R-"+"2.15.0/library\")\n");
System.out.println(rexp.isNull());
rexp=re.parseAndEval("dframe<-sqldf(\"select * from Orange\")");
System.out.println(rexp.isNull());
}
}
Выход выше код:
Rengine created, waiting for R
true
true
Это означает, что «dframe» не содержит ничего. Но когда я пытаюсь запустить тот же sqldf func: sqldf («select * from Orange») на R, то он дает мне 35 строк. Как использовать функции sqldf в java, чтобы получить желаемые результаты?
Мои переменные окружения устанавливаются следующим образом:
R_HOME=C:\Program Files\R\R-2.15.0
R_LIBS=C:\Program Files\R\R-2.15.0\library
R_LIBS_USER=C:\Program Files\R\R-2.15.0\library
Path=C:\Program Files\R\R-2.15.0\bin\i386;C:\Program Files\R\R-2.15.0\library\rJava\jri
Да это теперь работает. Благодаря :) – AksVidyarthi