English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Primeiro, instale o pacote "Rserve" no R.
Se você estiver usando a interface gráfica RGui, na barra de menu, na seção Pacotes - O instalador de pacotes pode concluir essa etapa. Se você estiver usando o console R puro, você pode usar o seguinte comando:
install.packages("Rserve", repos = "https://mirrors.ustc.edu.cn/CRAN/)
Após a instalação do Reserve, no diretório raiz do R haverá um diretório library, onde você encontrará o Rserve/No diretório java, você encontrará dois arquivos: REngine.jar e Rserve.jar.
Esses dois arquivos são bibliotecas de interface R em Java.
Atenção:Java não pode usar as funcionalidades do R de forma independente do sistema R!
Acesse o R e insira o seguinte código para iniciar o Rserve:
library("Rserve") Rserve()
Se o início for bem-sucedido, o R mostrará o caminho do Rserve.
Primeiro, importe os dois jars que acabamos de mencionar.
Após a importação, conhecemos uma classe crucial: RConnection, que pode ser usada para se conectar ao Rserve.
Nós estamos usando R em Java para realizar uma operação de inversão de matriz:
import org.rosuda.REngine.Rserve.*; public class Main { public static void main(String[] args) { RConnection rcon = null; try { // Conectar-se ao Rserve rcon = new RConnection("127.0.0.1"); // A função eval() é usada para fazer o R executar instruções R // Aqui foi criado um m1 Matriz rcon.eval("m1 = matrix(c(1, 2, 3, 4, 2, 2, // , byrow=TRUE")1 A função solve() em R resolve m // e retorna o resultado, a função asDoubleMatrix pode converter os dados em // Array bidimensional double em Java para representar a matriz double[][] m1 = rcon.eval("solve(m1).asDoubleMatrix(); // Exibir o conteúdo da matriz 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(); } } }
Resultados da Execução:
-1.9999999999999998 1.0 1.4999999999999998 -0.49999999999999994
Claramente, o resultado está correto, mas毕竟是 floats, então a impressão pode não parecer tão bonita, mas não afeta o uso dos dados.