Anda di halaman 1dari 10

Dasar-dasar Pemrograman Datamining di R: Interface Pemrograman Java

Sigit Wahyu Kartiko


gsigit[at]gmail[dot]com

Lisensi Dokumen:

Copyright 2003-200! IlmuKomputer.Com "eluruh do#umen di IlmuKomputer.Com dapat diguna#an$ dimodi%i#asi dan dise&ar#an secara &e&as untu# tu'uan &u#an #omersial (nonpro%it)$ dengan syarat tida# menghapus atau meru&ah atri&ut penulis dan pernyataan copyright yang diserta#an dalam setiap do#umen. *ida# diper&oleh#an mela#u#an penulisan ulang$ #ecuali mendapat#an i'in terle&ih dahulu dari IlmuKomputer.Com.

Pendahuluan
Selain sebagai software paket statistika, R juga merupakan lingkungan sistem pemrograman yang cukup lengkap. Artinya, R dapat digunakan sebagai alat untuk memecahkan berbagai masalah melalui pemrograman. Tentu saja masalah yang lebih tepat dipecahkan dengan R adalah yang terkait dengan analisis data dalam konteks statistika. Para developer R menyadari bahwa analisis data kuantitatif melalui statistika memerlukan beberapa tahapan yang mana setiap tahapan dibutuhkan alat bantu untuk berbicara dengan lingkungan disekitarnya. Secara singkat tahapan ini meliputi !" persiapan data, #" pemilihan metode$teknik, %" eksekusi dan &" penyajian informasi. Sebagai contoh, pada tahap persiapan data, alat bantu yang dibutuhkan bagi seorang stastisi adalah kemudahan dalam menghubungkan raw data 'database, file terstruktur, dsb" dengan lingkungan R. Solusi yang diberikan oleh developer dan kontributor R terkait dengan hal ini diantaranya adalah membuat library ()*+, ,)*+, +S- dll. Selain kemudahan, konsep yang sering digunakan oleh para programer adalah otomatisasi dan integrasi proses. Artinya dalam sistem yang kompleks, lingkungan R harus bisa menyediakan interface bahasa yang berfungsi sebagai penghubung antar fungsi.fungsi dalam sistem tersebut. )engan latar belakang itulah developer dan kontributor R membuat berbagai interface bahasa pemrograman yang berada diluar R seperti +, ,ava dan Tcl$Tk agar bisa memudahkan proses otomatisasi dan integrasi. Pada kesempatan kali ini penulis ingin mengkhususkan pembahasan interface bahasa di R yang sangat populer yaitu java. )iharapkan para pembaca sudah menyempatkan diri untuk mengulas materi sebelumnya yang sudah diupload oleh penulis diantaranya/ pengenalan R!, dasar.dasar
! http/$$ilmukomputer.org$#0!#$0&$01$mengenal.software.statistika.r.sebagai.datamining.tooldi.linu2$

Komunitas eLearning IlmuKomputer.Com Copyright 2003-20 2 IlmuKomputer.Com

pengelolaan data# dan plotting%.

Instalasi Java Development Kit (JDK)


Sebelum melakukan instalasi ,)3 di linu2, langkah pertama yang harus dikerjakan adalah mendownload terlebih dahulu file ,)3 tersebut di situs (racle. Selanjutnya langkah.langkah instalasi dapat ditelusuri di bagian 4Self.52tracting *inary 6nstallation for 7inu28& yang juga berada di situs (racle.

Instalasi Plugin-plugin Terkait


Setelah java terpasang dengan benar, langkah berikutnya adalah menginstalasi plugin.plugin yang terkait dengan interface pemrogaraman java di R. Plugin tersebut antara lain/
Plugin )*6 r,ava R,)*+ Deskripsi 7ow.level database interface ')*6" yang mampu menghubungakan antara R dengan R)*9S 7ow.level interface untuk java 3oneksi java dengan database ',)*+". Selain itu perlu ditambahkan driver ,)*+ untuk database yang relevan dalam menggunakan plugin ini 9erupakan server R secara lokal yang memanfaatkan komunikasi T+P$6P sehingga memungkinkan bagi program di client untuk melakukan perintah ke server R tanpa membuka workspace R. Rserve ini memiliki kelebihan bahwa akses terhadap server bersifa thread safe. :amun hanya direkomendasikan untuk R yang berjalan di linu2. 6mplementasi di sisi client yang tersedia adalah +$+;; dan ,ava.

Rserve

*a&el + ,lugin minimal yang di&utuh#an dalam pemrograman inter%ace 'a-a di .


Sebelum melakukan instalasi pastikan konfigurasi java di R sudah dibuat. 3etikkan perintah berikut ini di terminal linu2 untuk mengkonfigurasi environment java/
R CMD javareconf

*erikutnya adalah menginstalasi file.file plugin. Ada baiknya jika menggunakan user root untuk memudahkan proses kompilasi file.file plugin. <ntuk hal ini maka perlu di. setting R=>(95 untuk user root dengan melakukan e/port variabel R=>(95 dalam file $root$.bashrc ?. Perintah instalasi file.file plugin dapat dilakukan dengan sekali perintah yaitu sebagai berikut/ !. *erada di direktori tempat menaruh file.file plugin
cd /home/sigit/R/src/plugin/

#. Perintah instal plugin


# % & ? http/$$ilmukomputer.org$#0!#$0&$0@$dasar.dasar.pemrograman.datamining.di.r.pengelolaan.data$ http/$$ilmukomputer.org$#0!#$0&$!%$dasar.dasar.pemrograman.datamining.di.r.plotting$ http/$$www.oracle.com$technetwork$java$javase$install.linu2.self.e2tracting.!%@A@%.html >al ini sudah dibahas di tulisan sebelumnya mengenai pengenalan software statistika R di http/$$ilmukomputer.org$#0!#$0&$01$mengenal.software.statistika.r.sebagai.datamining.tooldi.linu2$

Komunitas eLearning IlmuKomputer.Com Copyright 2003-20 2 IlmuKomputer.Com

R CMD INSTALL l /home/sigit/R/R !"#$"$/program/li%/R/li%rar&/ ' D(I)$"! *"tar"g+ r,ava)$"- #"tar"g+ R,D(C)$"# ."tar"g+ Rserve)$"/ $"tar"g+

7angkah berikutnya yang sangat penting bagi client yang akan mengakses server R adalah membuat library java dari plugin Rserve. 7ibrary java berupa file jar dibuat dari source plugin Rserve. 7akukan langkah.langkah berikut untuk mengkompilasi source menjadi file jar. !. 3embali berada di direktori tempat menaruh file.file plugin
cd /home/sigit/R/src/plugin/

#. 5kstrak isi file Rserve


tar 0+vf Rserve)$"/ $"tar"g+

%. *erada di direktori source java di folder Rserve hasil ekstraksi


cd Rserve/src/client/java ne1

&. 3ompilasi file source dengan perintah make


ma2e

Tunggu beberapa saat, setelah sukses maka hasil kompilasi tersebut adalah # file yang penting dalam melakukan pemrograman java di R yaitu file R ngine!"ar dan Rserve!"ar.

Menghidupkan Server Lokal R


Supaya program di sisi client dapat berkomunikasi dengan layanan R melalui T+P$6P maka server R harus dihidupkan. +ara menghidupkan server lokal R dapat dilakukan dengan # cara yang pertama, masuk dalam workspace R terlebih dahulu lalu dihidupkan servernya. Atau cara kedua melalui perintah R di terminal tanpa masuk ke workspace langsung menghidupkan server.

ara Pertama
+ara pertama adalah masuk terlebih dahulu ke dalam workspace R dengan perintah/
R

setelah berada di dalam workspace ketikkan panggil library Rserve lalu aktifkan dengan fungsi Rserve#$/
library(Rserve) Rserve()

,ika berhasil maka Rserve akan hidup dalam mode daemon menggunakan port 1%!!/
Starting Rserve on port 6311 : /home/sigit/R/R-2.10.0/program/lib/R/bin/R CMD /home/sigit/R/R2.10.0/program/lib/R/library/Rserve/libs//Rserve-bin.so !revio"sly save# $or%spa&e restore#' Rserv starte# in #aemon mo#e.

Komunitas eLearning IlmuKomputer.Com Copyright 2003-20 2 IlmuKomputer.Com

ara Kedua
+ara berikutnya adalah langsung menjalankan perintah R/
R CMD Rserve

3arena belum ada fasilitas untuk mematikan Rserve maka untuk menghentikan server gunakan perintah sebagai berikut/
2illall Rserve

!perasi Tipe Data R melalui Java


Pengelolaan variabel$data di R dapat dilakukan melalui pemrograman ,ava. Tipe.tipe variabel$data tersebut antara lain adalah scalar$ -ector 'numerik, karakter, logical", matriks, data%rame0list dan %actor0ordered. <ntuk dapat melakukan operasi variable$data maka object java yang harus di -instance adalah org.rosuda.REngine.Rserve.RConnection .R+onnection merupakan class yang memiliki metode untuk me-assign variabel, diantaranya adalah/
3 3 3

assign'" eval'" parseAnd5val'"

Penggunaan masing.masing metode tersebut dapat dimengerti dalam contoh berikut ini.

Tipe Data "e#tor


<ntuk membuat data vector di R dengan di java akan ditampilkan dalam tabel yang dipersandingkan sebagai berikut/
R 2olom"# 4 c5#6!678 2olom"! 4 c5#"$6 !"$6 7"$8 vector"a 4 c52olom"#6 2olom"!8 Java
RConnection c 9 ne1 RConnection58: RList l 9 ne1 RList58: l"put5;2olom"#;6ne1 R<=>Integer5ne1 int?@A #6!67B88: l"put5;2olom"!;6ne1 R<=>Dou%le5ne1 dou%le?@A #"$6!"$67"$B88: c"assign5;vector"a;6 ne1 R<=>CenericDector5l88:

*a&el 2+ assign data -ector di . dan 1a-a


(utput dari assign variabel tersebut adalah berupa vector dengan tipe data integer, sedangkan yang bertipe double akan menjadi integer karena yang pertama kali di masukkan ke dalam vector di variabel vector.a adalah variabel kolom.! yang bertipe integer. (utputnya adalah sebagai berikut/
[1] 1 2 3 1 2 3

Tipe Data $rame


>ampir sama dengan data vector, untuk membuat data frame dibutuhkan data perkolom terlebih dahulu melalui R7ist, lalu di assign ke dalam R+onnection dengan menggunakan variabel data frame yaitu R5BP.create)ataCrame'".

Komunitas eLearning IlmuKomputer.Com Copyright 2003-20 2 IlmuKomputer.Com

&

R 2olom"# 4 c5#6!678 2olom"! 4 c5#"$6 !"$6 7"$8 data"frame"a 4 c52olom"#6 2olom"!8

Java
RConnection c 9 ne1 RConnection58: RList l 9 ne1 RList58: l"put5;2olom"#;6ne1 R<=>Integer5ne1 int?@A #6!67B88: l"put5;2olom"!;6ne1 R<=>Integer5ne1 dou%le?@A #"$6!"$67"$B88: c"assign5;data"frame"a;6 ne1 R<=>"createDataErame5l88:

*a&el 3+ assign data %rame di . dan 1a-a


(utput data frame tersebut adalah sebagai berikut/
1 2 3 %olom.1 %olom.2 1 1 2 2 3 3

+ara lain untuk me-assign variabel vector adalah dengan memanfaatkan metode parseAnd5val'". +ara ini sangat praktis apabila sebab seolah.olah kita bekerja pada workspace R. Semua perintah R dapat dilakukan didalam metode dengan menambahkan karakter kurung siku buka 'D" dan tutup 'E", pemisah antar baris.nya adalah semicolon'F", dan yang ditangkap sebagai variabel R5BP di java adalah baris terakhir. Sebagai misal data frame iris adalah bawaan dari workspace R, maka dapat langsung dipanggil dengan metode parseAnd5val'".
Java
RConnection c 9 ne1 RConnection58: R<=> df 9 c"parseAnd<val5;Adata5iris8: irisB;8: c"assign5;data"frame"iris;6 df8:

*a&el 2+ assign data %rame dengan parse3nd4-al()


)apat dilihat bahwa statement dalam parseAnd5val adalah 4data'iris"F iris8 yang diapit oleh tanda D dan E. *aris statement tersebut ada # yaitu data'iris" dan iris. )i workspace R, setelah mengimpor data iris dengan perintah 4data'iris"8 maka perintah berikutnya yaitu 4iris8 akan menghasilkan output tampilan data frame di layar. Tampilan dari perintah di baris terakhir inilah yang ditangkap oleh R5BP sebagai variabel.

Plotting R melalui Java


7angkah.langkah melakukan plotting R di java dapat disederhanakan sebagai berikut/ !. #. %. &. 9enentukan nama, ukuran, dan tipe file image plot yang akan dibuat 9emanggil variabel.variabel data frame yang akan ditampilkan dalam plot 9enyimpan stream file image ke dalam variabel di program java 9enampilkan stream file image.

<ntuk lebih jelasnya akan kita sandingkan perintah di R dengan java sebagai berikut/

Komunitas eLearning IlmuKomputer.Com Copyright 2003-20 2 IlmuKomputer.Com

%angkah 9enentukan nama, kualitas, tipe file image plot yang akan dibuat 9emanggil variabel.variabel data frame yang akan ditampilkan dalam plot 9enyimpan stream file image ke dalam variabel di program java 9enampilkan stream file image.

R
jpeg5Ftest"jpgF6 Gualit&9H$8

Java
RConnection c 9 ne1 RConnection58: R<=> rImage 9c"parseAnd<val5;jpeg5Ftest"jpgF6IJ KGualit&9H$8;8:

data5iris8 attach5iris8 plot5Sepal"Length6 >etal"Length6 col9unclass5Species88 dev"off58

c"parseAnd<val5;data5iris8: attach5iris8:IJ Kplot5Sepal"Length6 >etal"Length6IJ Kcol9unclass5Species88: dev"off58;8:

R<=> rImage 9c"parseAnd<val5 ;r9read(in5Ftest"jpgF6Fra1F6#$!*L#$!*8:IJ Kunlin25Ftest"jpgF8: r;8

Image img 9 Tool2it"getDefaultTool2it58 "createImage5rImage"as(&tes588:

*a&el 5+ assign data %rame di . dan 1a-a

Studi Kasus% Program Java Desktop menampilkan &ra'ik $ungsi di R


Agar lebih jelas, mari kita coba membuat program sederhana menampilkan grafik fungsi dengan java. Sebagai latihan program sederhana ini berbasis desktop dengan memanfaatkan li&rary desktop swing di java. Sebagai gambaran tampilan aplikasi ini adalah berupa form yang memiliki menu yang menampilkan item e2it aplikasi, canvas sebagai tempat menampilkan output plot, dan te2tbo2 sebagai input fungsi yang diinginkan.

6am&ar + s#etsa program sederhana 1.,lot

Komunitas eLearning IlmuKomputer.Com Copyright 2003-20 2 IlmuKomputer.Com

Source code selengkapnya adalah sebagai berikut/ &ile : JRPlot!"ava


//library desktop swing import java.awt.*; import java.awt.event.*; import javax.swing.*; //dari import //dari import REngine.jar org.rosuda.REngine.*; Rserver.jar org.rosuda.REngine.Rserve.*;

public class JRPlot { JMenu ar !enu; JMenu !enu"ile; JMenu#te! !enu#te!$eluar; J%ext"ield textRu!us; J"ra!e window; J&abel labelPlot; R'onne(tion (; public JRPlot)* { // !e!buat !enu standar !enu + new JMenu ar)*; !enu"ile + new JMenu)*; !enu#te!$eluar + new JMenu#te!)*; !enu"ile.set%ext),"ile,*; !enu#te!$eluar.set%ext),%utup,*; !enu"ile.add)!enu#te!$eluar*; !enu.add)!enu"ile*; // window window + new J"ra!e),Plot R ,*; window.setPre-erred.i/e)new 0i!ension)1223 122**; window.setJMenu ar)!enu*; // text box te!pat !enulis ru!us textRu!us + new J%ext"ield),-un(tion)x*{x456,*; textRu!us.set"ont)new "ont),7rial,3 523 52**; // te!pat ga!bar plot labelPlot + new J&abel)*; window.get'ontentPane)*.add)labelPlot3 window.get'ontentPane)*.add)textRu!us3

order&ayout.CENTER*; order&ayout.SOUTH*;

//inisialisasi aksi3 li8at !et8od 9publi( void init7(tion)*9; init7(tion)*; window.pa(k)*; window.set&o(ationRelative%o)null*; window.set:isible)true*;

//prosedur !engga!bar plot; private void ga!barPlot)*{ try { //de-ault koneksi ke lo(al8ost; ( + new R'onne(tion)*; int x + labelPlot.get.i/e)*.8eig8t; int y + labelPlot.get.i/e)*.widt8; // perinta8 s(ript R yang paling penting RE;P xp + (.parse7ndEval),try)jpeg)9test.jpg9338+, < x < ,3w+, < y < ,**,*; (.parse7ndEval),plot), < textRu!us.get%ext)* < ,*,*; (.parse7ndEval),dev.o--)*,*; xp + (.parse7ndEval),r+read in)9test.jpg939raw93=251*=251*; unlink)9test.jpg9*; r,*; //ga!bar ditangkap ole8 java

Komunitas eLearning IlmuKomputer.Com Copyright 2003-20 2 IlmuKomputer.Com

#!age i!g + %oolkit.getDefaultToolkit)*.(reate#!age)xp.as ytes)**; #(on plot + new #!age#(on)i!g*; //!enaru8 ga!bar di label te!pat plot ditaru8 labelPlot.set#(on)plot*; window.set%itle),Plot R >, < textRu!us.get%ext)* < ,?,*; 6 catch )Ex(eption e* { J@ptionPane.showMessageDialog)window3 ,!aa- ada kesala8anA..,*; e.print.ta(k%ra(e)*; 6 6 private void init7(tion)*{ //aksi !engga!bar plot jika textbox di tekan enter textRu!us.add7(tion&istener)new 7(tion&istener)* { public void a(tionPer-or!ed)7(tionEvent e* { ga!barPlot)*; 6 6*; //aksi !engga!bar plot -ra!e di uba8 tinggi dan lebarnya labelPlot.add'o!ponent&istener)new 'o!ponent7dapter)* { public void (o!ponentResi/ed)'o!ponentEvent e* { ga!barPlot)*; 6 6*; window.addBindow&istener)new Bindow7dapter)* { public void window'losing)BindowEvent evt* { tutup7plikasi)*; 6 6*; !enu#te!$eluar.add7(tion&istener)new 7(tion&istener)* { public void a(tionPer-or!ed)7(tionEvent e* { tutup7plikasi)*; 6 6*;

private void tutup7plikasi)*{ //tutup koneksi dan aplikasi (.(lose)*; .yste!.exit)2*; 6 public static void !ain).tring>? args*{ //jalankan progra! new JRPlot)*; 6

Sebelum melakukan kompilasi letakkan file Rserve.jar dan Rengine.jar sejajar dengan file ,RPlot.java dan lakukan kompilasi program java dengan perintah sebagai berikut/
javac cp Rserve"jarMR<ngine"jarM" ,R>lot"java

Cile yang dihasilkan adalah berupa file.file bytecode dengan ekstensi .class. >al ini berarti kompilasi telah berhasil dilakukan. Setelah itu jalankan program java dengan perintah sebagai berikut/
java cp Rserver"jarMR<ngine"jarM" ,R>lot

Tampilan program yang dihasilkan adalah sebagai berikut/

Komunitas eLearning IlmuKomputer.Com Copyright 2003-20 2 IlmuKomputer.Com

6am&ar 2+ output #eluaran dari program 1.,lot


+obalah untuk mengetikkan fungsi lain misalnya 4 y G 2% 8 maka gantilah dengan perintah sebagai berikut 4 function'2"D2H#E 8 pada te2tbo2 fungsi lalu tekan enter. 9aka grafik akan berubah. Selain itu jika anda mengubah ukuran dari frame program maka tampilan grafik akan mengikuti lebar dan tinggi frame program tersebut

Penutup
Sampai dengan saat ini anda sudah dapat melakukan komunikasi antara bahasa R dan java. Teknologi interface java di R membantu developer untuk mengeksplor lebih jauh utility R di java sehingga integrasi antara kekuatan java dan R dapat digabungkan. Tidak mustahil apabila perintah.perintah R dijalankan secara otomatis melalui program java. Selain itu dengan memanfaatkan kemampuan java atas infrastruktur pemrograman web maka proses datamining di R melalui dunia maya sangat mungkin untuk dilakukan.

Re'erensi
!. 6haka, R. I Jentleman, R. '!KK1". "R: A Language for Data Analysis and Graphics". ournal of Computational and Graphical !tatistics " #$%: &''($)*. www.jstor.org

Komunitas eLearning IlmuKomputer.Com Copyright 2003-20 2 IlmuKomputer.Com

#. Rossiter, ). J. '#00K". +ntroduction to the R ,ro-ect for !tatistical Computing for use at +.C. Accessed/0%.0%. #0!0. http/$$ www.itc.nl$ personal$ rossiter %. Lilliams, Jraham ,. Rattle: A Data /ining G0+ for R. Accessed/01.0&.#0!#. http/$$journal.r.project.org$archive$#00K.#$R,ournal=#00K.#=Lilliams.pdf &. +hihara, 7aura. ,lotting Concepts in R. http/$$www.people.carleton.edu$Mlchihara$Splus$RPlot.pdf ?. http/$$www.rforge.net$Rserve 1. http/$$www.R.project.org Accessed/ 0A.!#.#00K.

(iogra'i Penulis
Sigit Wahyu Kartiko. 9enyelesaikan )6- di Sekolah Tinggi Akuntansi :egara dan 9agister 5konomi di Cakultas 5konomi <niversitas 6ndonesia. 9emiliki kompetensi pada bidang programming 'java, scala, R, +, +;;", data&ase, accounting 'privat, publik", pu&lic sector economics.

Komunitas eLearning IlmuKomputer.Com Copyright 2003-20 2 IlmuKomputer.Com

!0

Anda mungkin juga menyukai