Utiliser R en Java
Tout d'abord, installez le package "Rserve" dans R.
Si vous utilisez l'interface graphique RGui, vous pouvez faire cela dans la barre de menus sous Packages - Install packages. Si vous utilisez une console R pure, vous pouvez utiliser la commande suivante :
install.packages("Rserve", repos = "https://mirrors.ustc.edu.cn/CRAN/")
Après l'installation de Rserve, il y aura un répertoire library sous le répertoire racine de R. Trouvez le répertoire Rserve/java dedans, et vous verrez deux fichiers : REngine.jar et Rserve.jar.
Ces deux fichiers constituent la bibliothèque d'interface R en Java.
Remarque :Java ne peut pas utiliser indépendamment les fonctionnalités de R sans le système R !
Étape 1 : Démarrer Rserve
Lancez R, puis saisissez le code suivant pour démarrer Rserve :
library("Rserve")
Rserve()
Si le démarrage réussit, R affichera le chemin d'accès à Rserve.
Étape 2 : Écrire un programme Java
Importez d'abord les deux bibliothèques jar mentionnées précédemment.
Après l'importation, nous découvrons une classe clé : RConnection. Cette classe peut être utilisée pour se connecter à Rserve.
Maintenant, utilisons R en Java pour effectuer un calcul de matrice inverse :
![]()
Exemple
public class Main {
public static void main(String[] args) {
RConnection rcon = null;
try {
// Établir la connexion avec Rserve
rcon = new RConnection("127.0.0.1");
// La fonction eval() est utilisée pour permettre à R d'exécuter des instructions R
// Ici, une matrice m1 est créée
rcon.eval("m1 = matrix(c(1, 2, 3, 4), 2, 2, byrow=TRUE)");
// La fonction solve() calcule l'inverse de la matrice m1 dans R
// Et renvoie le résultat. La fonction asDoubleMatrix peut convertir les données en
// un tableau de double à deux dimensions en Java pour représenter la matrice
double[][] m1 = rcon.eval("solve(m1)").asDoubleMatrix();
// Afficher le contenu de la matrice
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();
}
}
}
Résultat de l'exécution :
-1.9999999999999998 1.0 1.4999999999999998 -0.49999999999999994
De toute évidence, le résultat est correct, mais après tout, ce sont des nombres à virgule flottante, donc la sortie imprimée peut ne pas être très jolie ; cela n'affecte pas l'utilisation des données.
Autres extensions