English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

استخدام Java في بلغة R

ابتدا، در R کتابخانه "Rserve" را نصب کنید.

اگر از رابط ویزوئال RGui استفاده می‌کنید، می‌توانید این مرحله را در منوی پیکربندی - نصب کتابخانه‌ها انجام دهید. اگر از کنسول R استفاده می‌کنید، می‌توانید از دستور زیر استفاده کنید:

install.packages("Rserve", repos = "https://mirrors.ustc.edu.cn/CRAN/")

پس از نصب کامل Reserve، یک پوشه library در ریشه R وجود خواهد داشت، در آن به پوشه Rserve/java بروید و دو فایل REngine.jar و Rserve.jar را در آن پیدا کنید.

این دو فایل کتابخانه‌های رابط Java هستند.

توجه:Java نمی‌تواند از سیستم R مستقل از R استفاده کند!

مرحله اول: راه‌اندازی Reserve

به R بروید و کد زیر را برای راه‌اندازی Rserve وارد کنید:

library("Rserve")
Rserve()

اگر راه‌اندازی موفقیت‌آمیز باشد، R مسیر Rserve را نمایش می‌دهد.

مرحله دوم: نوشتن برنامه Java

ابتدا دو کتابخانه jar قبلی را وارد کنید.

پس از وارد کردن، یک کلاس کلیدی می‌شناسیم: RConnection، که می‌تواند برای اتصال به Rserve استفاده شود.

نحن الآن في Java از R استفاده می‌کنیم تا یک محاسبه معکوس ماتریس انجام دهیم:

import org.rosuda.REngine.Rserve.*;
public class Main {
    public static void main(String[] args) {
        RConnection rcon = null;
        try {
            // إنشاء اتصال مع Rserve
            rcon = new RConnection("127.0.0.1");
            
            // دالة eval() تستخدم لتنفيذ تعليمات R
            // تم إنشاء صفيف m1 هنا
            rcon.eval("m1 = matrix(c(1, 2, 3, 4), 2, 2, byrow=TRUE)");
            
            // دالة solve() في R تبحث عن معكوس الصفيف m1
            // سيتم تحويل البيانات إلى الصفيف الثنائي باستخدام دالة asDoubleMatrix
            // الصفيف الثنائي من Java لتمثيل الصفيف
            double[][] m1 = rcon.eval("solve(m1)").asDoubleMatrix();
            
            // إدخال محتوى الصفيف
            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();
            }
        }
            e.printStackTrace();
        }
            if (rcon != null) rcon.close();
        }
    }
}

نتيجة التنفيذ:

-1.9999999999999998 1.0    
1.4999999999999998 -0.49999999999999994

من الواضح، النتيجة صحيحة، ولكنها أرقام عشوائية، لذا قد لا تبدو مبهرة عند الطباعة، ولكنها لا تؤثر على استخدام البيانات.