สวัสดีครับพอดีได้มีโอกาสเล่น R Rrogramming ครั่งแรกด้วย framwork ชื่อว่า RCaller ก็เลยมาเขียนบทความเกี่ยวกับการใช้ภาษา R โดยการทำงานผ่านภาษา Java
ก่อนอื่นเรามาทำความรู้จักกับภาษา R กับก่อน ภาษา R เป็นภาษาที่ใช้สำหรับคำนวณคณิตศาสตร์และกราฟสำหรับงงานทางด้านสถิติ ซึ่งตัวของภาษา R จะสนับสนุนการคำนวณทางสถิติต่างๆ เช่น linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering เป็นต้น
หลังจากที่พอรู้กันคราวๆแล้ว คราวนี้ผมจะมาสอนวิธีการเชิ่มต่อ R และ Java ดังนั้นสิ่งที่เราต้องมีคือ
- R interpreter
- IDE Netbean , Eclipse
- RCaller 2.0
เอาละครับเรามาดูขั่นตอนแรกกันว่าต้องทำยังไง ก่อนอื่นเข้าไปโหลด R interpreter ที่นี่ ครับ หลังจากนั้นก็ทำการติดตั่งไว้ในไดรเรกทอรี่ของเรา
หลังจากติดตั่งเสร็แล้วให้เปิดตัว IDE ขึ้นมาในที่นี้ผมเลือกเป็น Netbeans และสร้าง Java Project ขึ้นมา 1 ตัว
จากนั้นเราจะทำการโหลดตัวไลบารี่สำหรับเขียนโปรแกรม RCaller มา ที่นี่ เลือก RCaller-2.0.7.jar และนำไปวางไว้ในโฟรเดอร์ที่เราต้องการ ต่อไปเราต้องทำการเพิ่มไลบารี่ที่โหลดมาคือ .jar ตามภาพคลิกขวาแล้วลือก Add JAR/Folder
หลังจากที่เราได้เพิ่ม .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]
ผลที่อออกมาคือ
Ref: :http://www.mhsatman.com/rcaller.php , http://www.r-project.org/