Я новичок в программировании R. Я создал простой скрипт R и пытаюсь запустить его с помощью JAVA-класса, но я не могу этого сделать.Сценарий Run R с использованием JAVA-программы
Я пробовал использовать Rserve, а также rJava. Используя Rserve, выполнение кода прекратилось после создания экземпляра «RConnection», тогда как использование исключения rJava «java.lang.UnsatisfiedLinkError: jri.dll: Невозможно найти зависимые библиотеки».
код класса JAVA, как показано ниже:
Для rJava:
import org.rosuda.JRI.Rengine;
public class Temp {
public static void main(String a[]) {
// Create an R vector in the form of a string.
String javaVector = "c(1,2,3,4,5)";
// Start Rengine.
Rengine engine = new Rengine(new String[] { "--no-save" }, false, null);
// The vector that was created in JAVA context is stored in 'rVector' which is a variable in R context.
engine.eval("rVector=" + javaVector);
//Calculate MEAN of vector using R syntax.
engine.eval("meanVal=mean(rVector)");
//Retrieve MEAN value
double mean = engine.eval("meanVal").asDouble();
//Print output values
System.out.println("Mean of given vector is=" + mean);
}
}
Для Rserve:
import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;
public class Temp {
public static void main(String a[]) {
RConnection connection = null;
System.out.println("line 10");
try {
// Create a connection to Rserve instance running on default port 6311
System.out.println("line 15");
connection = new RConnection();
System.out.println("line 17");
//Note four slashes (\\\\) in the path
connection.eval("source('D:\\\\RExamples\\\\helloworld.R')");
System.out.println("line 19");
int num1=10;
int num2=20;
int sum=connection.eval("myAdd("+num1+","+num2+")").asInteger();
System.out.println("The sum is=" + sum);
} catch (RserveException e) {
e.printStackTrace();
} catch (REXPMismatchException e) {
e.printStackTrace();
}
}
}
Пожалуйста, дайте мне знать, если мой вопрос не ясно, или если вы хотите узнать что-нибудь еще. Заранее спасибо.
Как вы настроили RConnection()? Похоже, вам нужно исследовать конфигурацию. Возможно, установите контрольную точку внутри конструктора RConnection(), чтобы проверить соединение. – Craig
Вы можете сказать мне и другой способ. Я получил этот код от Google. – Tiya