Rcaller 2.0 – Calling R from Java

สวัสดีครับพอดีได้มีโอกาสเล่น R Rrogramming ครั่งแรกด้วย framwork ชื่อว่า RCaller ก็เลยมาเขียนบทความเกี่ยวกับการใช้ภาษา R โดยการทำงานผ่านภาษา Java

ก่อนอื่นเรามาทำความรู้จักกับภาษา R กับก่อน ภาษา R เป็นภาษาที่ใช้สำหรับคำนวณคณิตศาสตร์และกราฟสำหรับงงานทางด้านสถิติ ซึ่งตัวของภาษา R จะสนับสนุนการคำนวณทางสถิติต่างๆ เช่น linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering เป็นต้น

หลังจากที่พอรู้กันคราวๆแล้ว คราวนี้ผมจะมาสอนวิธีการเชิ่มต่อ R และ Java ดังนั้นสิ่งที่เราต้องมีคือ

  1. R interpreter
  2. IDE Netbean , Eclipse
  3. RCaller 2.0

เอาละครับเรามาดูขั่นตอนแรกกันว่าต้องทำยังไง ก่อนอื่นเข้าไปโหลด R interpreter ที่นี่ ครับ หลังจากนั้นก็ทำการติดตั่งไว้ในไดรเรกทอรี่ของเรา

untitled

หลังจากติดตั่งเสร็แล้วให้เปิดตัว IDE ขึ้นมาในที่นี้ผมเลือกเป็น Netbeans และสร้าง Java Project ขึ้นมา 1 ตัว

untitled

จากนั้นเราจะทำการโหลดตัวไลบารี่สำหรับเขียนโปรแกรม RCaller มา ที่นี่ เลือก RCaller-2.0.7.jar และนำไปวางไว้ในโฟรเดอร์ที่เราต้องการ ต่อไปเราต้องทำการเพิ่มไลบารี่ที่โหลดมาคือ .jar ตามภาพคลิกขวาแล้วลือก Add JAR/Folder

untitled

untitled

untitled

หลังจากที่เราได้เพิ่ม .jar ลงในตัวโปรแกรมแล้วก็ให้เปิด RCaller.java เพื่อทำการเขียนโปรแกรมทดสอบ โดยผมจะเขียนโปรแกรม เพื่อวาดกราฟขึ้นมาโดยมีข้อมูลตามนี้ {1,4,3,5,6,10} เป็น array สำหรับวาดกราฟขึ้นมา ขั่นแรกทำการ import เพื่อให้โปรแกรมมองเห็นฟังก์ชันก่อน

[sourcecode language=”java” wraplines=”false” collapse=”false”]
import java.io.File;
import rcaller.RCaller;
[/sourcecode]

จากนั้นสร้างข้อมูขึ้นมาชุดนึงเป็นอาเรย์

[sourcecode language=”java” wraplines=”false” collapse=”false”]
double[] numbers = new double[] {1,4,3,5,6,10};
[/sourcecode]

เพื่อให้ติดต่อกับภาษา R ได้ก็ทำการสร้างออปเจ็กขึ้นมาเพื่อเรียกใช้งานฟังก์ชันในภาษา R

[sourcecode language=”java” wraplines=”false” collapse=”false”]
RCaller caller = newRCaller();
[/sourcecode]

หลังจากมีออปเจ็กแล้วขั่นต่อไปสำคัญมากเนื่องจากเราต้องทำการตั่งค่าที่อยู่ของ R interpreter เพื่อให้ java สื่อสารกับได้และส่งผลลัพธ์กลับมาให้เรา

[sourcecode language=”java” wraplines=”false” collapse=”false”]
caller.setRscriptExecutable("C:Program FilesRR-3.0.0binRscript");
[/sourcecode]

จากขั่นตอนที่เราติดต่อภาษา R ลงบนเครื่องให้เราก็อบที่อยู่ของโฟรเดอร์มาใส่ในโปรแกรม ตัวอย่างเ่ช่น

[sourcecode language=”java” wraplines=”false” collapse=”false”]
C:Program FilesRR-3.0.0binRscript
[/sourcecode]

จากนั้นเราจะมาทำการ clean โค้ดก่อนทำการใส่ข้อมูลหรือคำสั่งภาษา R ลงไปเพื่อให้แน่ใจว่าไม่มีอะไรติดค้าง

[sourcecode language=”java” wraplines=”false” collapse=”false”]
caller.cleanRCode();
[/sourcecode]

จากนั้นก็เรียกคำสั่งสำหรับโยนข้อมูลเราลงไป

[sourcecode language=”java” wraplines=”false” collapse=”false”]
caller.addDoubleArray("x", numbers);
[/sourcecode]

และในตอนนี้เราก็มี x ที่เป็นตัวแปรสำหรับเก็บ ข้อมูลของ number[] แล้วหลังจากนี้เราจะมาสรา้งกราฟด้วยคำาั่งตามนี้

[sourcecode language=”java” wraplines=”false” collapse=”false”]
File file = caller.startPlot();
caller.addRCode("plot.ts(x)");
caller.endPlot();
[/sourcecode]

และทำการส่งข้อมูลไปให้ R interpreter ทำการประมวลผล

[sourcecode language=”java” wraplines=”false” collapse=”false”]
caller.runOnly();
[/sourcecode]

จากนั้นเราจะส้รางตัวแปรขึ้นมารับ กราฟจากภาษา R ดังนี้

[sourcecode language=”java” wraplines=”false” collapse=”false”]
ImageIcon ii=caller.getPlot(file);
[/sourcecode]

เสร็จแล้วก็สั่งให้มันแสดงภาพกราฟของเรา

[sourcecode language=”java” wraplines=”false” collapse=”false”]
caller.showPlot(file);
[/sourcecode]

ผลที่อออกมาคือ

untitled

Ref: :http://www.mhsatman.com/rcaller.php , http://www.r-project.org/

Facebook Comments