R in Java betreiben
Installieren Sie zunächst das Paket "Rserve" in R.
Wenn Sie die grafische Oberfläche RGui verwenden, können Sie dies in der Menüleiste unter Pakete - Pakete installieren vornehmen. Wenn Sie eine reine R-Konsole verwenden, können Sie den folgenden Befehl verwenden:
install.packages("Rserve", repos = "https://mirrors.ustc.edu.cn/CRAN/")
Nachdem Rserve installiert wurde, befindet sich ein library-Verzeichnis unter dem R-Stammverzeichnis. Suchen Sie darin das Verzeichnis Rserve/java, und Sie werden zwei Dateien sehen: REngine.jar und Rserve.jar.
Diese beiden Dateien sind die R-Schnittstellenbibliothek in Java.
Hinweis:Java kann die R-Funktionalität nicht unabhängig vom R-System nutzen!
Schritt 1: Rserve starten
Starten Sie R, und geben Sie den folgenden Code ein, um Rserve zu starten:
library("Rserve")
Rserve()
Wenn der Start erfolgreich ist, gibt R den Pfad zu Rserve aus.
Schritt 2: Schreiben Sie ein Java-Programm
Importieren Sie zuerst die beiden jar-Bibliotheken von zuvor.
Nach dem Importieren lernen wir eine wichtige Klasse kennen: RConnection. Diese Klasse kann verwendet werden, um eine Verbindung zu Rserve herzustellen.
Jetzt wollen wir R in Java nutzen, um die Berechnung einer inversen Matrix durchzuführen:
![]()
Beispiel
public class Main {
public static void main(String[] args) {
RConnection rcon = null;
try {
// Verbindung mit Rserve herstellen
rcon = new RConnection("127.0.0.1");
// Die eval()-Funktion wird verwendet, um R dazu zu bringen, R-Anweisungen auszuführen
// Hier wird eine Matrix m1 erstellt
rcon.eval("m1 = matrix(c(1, 2, 3, 4), 2, 2, byrow=TRUE)");
// Die solve()-Funktion berechnet die Inverse der Matrix m1 in R
// Und gibt das Ergebnis zurück. Die Funktion asDoubleMatrix kann die Daten umwandeln in
// ein zweidimensionales Double-Array in Java, um die Matrix darzustellen
double[][] m1 = rcon.eval("solve(m1)").asDoubleMatrix();
// Ausgabe des Inhalts der Matrix
for (int i = 0; i < m1.length; i++) {
for (int j = 0; j < m1[0].length; j++)
System.out.print(m1[i][j] + "\t");
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rcon != null) rcon.close();
}
}
}
Ausführungsergebnis:
-1.9999999999999998 1.0 1.4999999999999998 -0.49999999999999994
Offensichtlich ist das Ergebnis korrekt, aber es sind schließlich Gleitkommazahlen, daher mag die gedruckte Ausgabe nicht sehr schön aussehen; dies beeinträchtigt die Verwendung der Daten nicht.
Weitere Erweiterungen