Bagian I
Adnan Sauddin Jurusan Matematika,
Fakultas Sains dan Teknologi, UINAM [email protected]
Info:
Jurnal MSA Vol. 2 No. 2 Edisi: Juli – Desember 2014 Artikel No.: 7
Halaman: 51 -59 ISSN: 2355-083X
Prodi Matematika UINAM
ABSTRAK
R Programming merupakan suatu bahasa pemrograman khusus untuk matematika dan statistika yang bersifat open source. Keunggulan dari aplikasi ini adalah dapat diperoleh secara terbuka tanpa membeli lisensi. Pada R programming juga pengguna dapat melakukan analisis dengan hanya menulis fungsi yang diinginkan dengan paket yang telah tersedia yang banyak pengembang dan atau membuat sendiri list program sesuai dengan rumus dari data yang akan dianalisis. Kekuatan R programming berada pada Keterbukaannya sehingga tersedia banyak paket yang dibuat oleh orang-orang yang kompenten sehingga memudahkan bagi pengguna yang tidak memiliki kemampuan komputasi yang lebih. Aplikasi ini juga mengkover hampir semua formula dalam matematika dan statistic, seperti, vektor dan matriks.
Kata Kunci:R Programming, vektor, matriks, opensource.
1. PENGANTAR R
R adalah bahasa pemrograman untuk analisis statistic dan grafik yang didistribusikan dibawah lisensi GNU Genaral Public License. R memberikan fleksibilitas dan kekuatan dan konsisten yang mengintegasikan tool-tool untuk manipulasi data, analisis dan menampilkannya. Software R dapat didownload secara gratis di CRAN; http://r-project.org
2. Definisi-Definisi dalam R
Berikut beberapa definisi dari istilah-istilah yang digunakan Dalam R
Object R merupakan suatu bahasa berorientasi
obyek dan semua yang didalam R merupakan obyek. Sebagai contoh, suatu bilangan adalah obyek, suatu variable adalah obyek, output adalah obyek, himpunan data adalah obyek yang merupakan kumpulan obyek
Vektor Suatu kumpulan dari satu atau lebih
obyek dari jenis yang sama, contoh; semua bilangan atau semua huruf
Function suatu kumpulan instruksi yang
menghasilkan satu atau lebih obyek. Function
biasanya digunakan untuk melakukan tugas-tugas tertentu atau umum yang membutuhkan banyak instruksi. Sebagai contoh;
function mean() digunakan untuk menghitung rata-rata aritmetika dari nilai vector numeric yang diberikan. Function memuat nama diikuti oleh tanda kurung yang memuat himpunan parameter (dinyatakan sebagai argument) atau kosong.
Parameter jenis informasi yang dapat ditempatkan pada function. Sebagai contoh;
mean(), fungsi yang membutuhkan satu parameter
Argument informasi tertentu yang berkaitan dengan function untuk menentukan bagaimana fungsi seharus melakukan tugasnya. Argumen dinyatakan Dalam bentuk name=value ditempatkan diantara dua kurung yang diikuti oleh nama fungsi. Contoh; fungsi mean() membutuhkan paling sedikit satu argument.
Operator symbol yang digunakan untuk melakukan kerja tertentu atau symbol yang bermakna, seperti +, -, * dan /. Operator =
digunakan untuk menyatakan nilai argument dari suatu fungsi. Operator logika, TRUE atau FALSE, < (ruang kiri lebih kecil dari ruang kanan), > (ruang kiri lebih besar dari ruang kanan), >= (ruang kiri lebih besar atau sama dengan ruang kanan, <= (ruang kiri lebih kecil atau sama dengan ruang kanan, == (nilai ruang kiri sama dengan ruas kanan, != (ruang kiri tidak sama dengan ruang kanan), && (logika DAN), || (logika ATAU).
3. Nama Object
Semua obyek namanya harus unik. Aturannya adalah:
Nama harus huruf
Nama tidak boleh memuat karakter: spasi, - + * / # % & [ ] { } ( ) ~
Aturan penamaan:
Semua perintah dalam R bersifat case sensitive.
Nama harus menggambarkan obyek
4. Expression, Assignment dan Aritmetic Expression adalah perintah yang dimasukkan
pada command prompt R, dievaluasi oleh R lalu dicetak ke monitor. Contoh
> 2 + 3 ← (expression)
[1] 5 ← output hasil evaluasi
Assignment menyatakan suatu nama ke obyek
baru yang mungkin merupakan hasil evaluasi expression atau obyek yang lain. Operator assignment adalah < -.
> VAR1 <- 2 + 3 ← menyatakan expression pada obyek VAR1
> VAR1 ← Cetak
isi obyek VAR1
[1] 5 ← hasil
evaluasi
Kita juga bias membagi perintah-perintah dalam R,
> VAR2 <- ← assignment/ expression tidak atau belum lengkap
+ 2 + 3 ← melengkapi assignment atau expression
> VAR2 ← cetak isi VAR2, keluaran hasil evaluasi
[1] 5
Jika nilai suatu vektor adalah numeric, maka operator-opetor aritmetika dapat diterapkan > VAR2 - 1 ← cetak isi dari VAR2
dikurangi 1 [1] 4
> ANS1 <- VAR1 * VAR2 ← evaluasi expression dinyatakan pada ANS1
> ANS1 ←cetak isi
dari ANS1 sebagai hasil evaluasi
[1] 25
Obyek juga bisa digabungkan dengan menggunakan fungsi c() – concatenation > c(1, 2, 6) ← menggambungkan 1, 2
and 6
[1] 1 2 6 ← mencetak hasil > c(VAR1, ANS1) ←
menggabungkan isi VAR1 dan ANS1
[1] 5 25 ← cetak hasil
5. Session dan Workspace R Membersihkan session
Untuk melihat semua obyek yang aktif yang telah dibuat sebelumnya:
> ls() ← tampilkan
obyek aktif dalam R [1] "ANS1" "VAR1" "VAR2"
Fungsi ls() juga dapat digunakan untuk mencari nama obyek yang telah dibuat sebelumnya.
> ls(pat = "VAR") ←tampilkan obyek yang dibulai dengan VAR
[1] "VAR1" "VAR2"
> ls(pat = "A*1") ←tampilkan obyek yang memuat A dan 1 dengan sejumlah
[1] "ANS1" "VAR1"
Untuk menghapus obyek dalam memory digunakan fungsi rm()
> rm(VAR1, VAR2) ← hapus obyek VAR1 dan VAR2
> rm(list = ls()) ← hapus semua obyek yang telah didefinisikan sebelumnya
Direktori aktif
Secara default, tempat kita bekerja berada dalam direktori yang diatur oleh R, namun kita juga dapat mengatur pada direktori mana kita akan bekerja, dengan menggunakan fungsi setdw() dan untuk mengetahui director aktif gunakan fungsi getdw().
> setwd("~/Documents/") ←set the current working directory
> getwd() ←review
the current working directory [1] "/home/murray/Documents" > list.files(getwd())
[1] "addressbook.vcf"
[2] "Introduction.rnw" ←menampilkan semua file direktori aktif [3] "Introduction.rnw.map" [4] "Rplots.ps"
[5] "Rscripts.R"
Fungsi
Fungsi adalah sekumpulan perintah yang dikumpulkan secara bersama-sama sedemikian hingga perintah-perintah tersebut dapat dimulai atau dijalankan melalui satu perintah yang menyatukan seluruh masukan dari user pada sembarang perintah internal.
Fungsi membutuhkan satu atau lebih input yang disebut argument. Berikut struktur yang digunakan:
> seq (from, to) ← barisan bilangan dari ‘from’ hingga ‘to’ dengan kenaikan 1 > seq (from, to,
by=)
← barisan bilangan
dari ‘from’ hingga ‘to’ dengan kenaikan ‘by’ > seq (from, to,
length.out=)
← barisan bilanga ‘length.out’ dari ‘from’ to ‘to’ Contoh > seq(9,5) [1] 9 8 7 6 5 > seq(5,9) [1] 5 6 7 8 9 > seq(from=5, to=9) [1] 5 6 7 8 9
> seq(to=9, by=3), from=5)
Error: unexpected ',' in
"seq(to=9, by=3),"
> seq(to=9, by=3, from=5) [1] 5 8 Urutan Operator Operator Description [ [[ indexing :: name space $ component ^ exponentiation (evaluated right to left) - + sign (unary) : sequence
%special% special operators (e.g. %/%, %%)
* \ multiplication, division + - addition and subtraction < > <= >=
== !=
ordering and comparison ! logical negation (not) & && logical AND
| || logical OR ~ formula
-> ->> assignment (left to right) = argument assignment (right to
left)
<- <<- assignment (right to left)
Vektor
Vector adalah kumpulan satu atau lebih entri dari class (type) kelas yang sama.
.
Table 1.2 kelas-kelas Obyek Vektor dalam R. The operator : digunakan untuk membangkitkan
barisan bilangan bulat. Fungsi c() merupapkan penulisan ringkas untuk concatenate (penggabungan) dan dapat digunakan untuk membangkitkan vektor. operator == melakukan eveluasi sisi kiri apakah sama dengan sisi kanan
Vector class Example
Integer > 2:4 #vector of integers from 2 to 4 (Whole numbers) [1] 2 3 4
> c(1,3,9) #vector of integers [1] 1 3 9
numeric > c(8.4, 2.1) #vector of real numbers (Real numbers) [1] 8.4 2.1
character > c('A', 'ABC') #vector of letters (Letters) [1] "A" "ABC"
logical > c(2:4)==3 #evaluate the expression (TRUE or FALSE) [1] FALSE TRUE FALSE #the printed logical vector
Variable biologi adalah sekumpulan pengamatan dari jenis yang sama (contoh; variable suhu memuat kumpulan pengukuran suhu) dan disajikan dalam bentuk vektor. Variable kontinu biologi digambarkan dengan numeric vectors, dimana variable kategorial merupakan cara terbaik digambarkan dengan vektor.
Contoh > temperatur <-c(36.1, 30.6,31,39.9,6.5,11.2,12.8,9.7,1 5.9) > temperatur [1] 36.1 30.6 31.0 39.9 6.5 11.2 12.8 9.7 15.9
Regular atau Pola Barisan
Barisan inklusi bilangan bulat dapat dibangkitkan dengan menggunakan: operator > # barisan inklusif dari 18 hingga 10
> 18:10
[1] 18 17 16 15 14 13 12 11 10 Fungsi seq() digunakan untuk membangkitkan barisan numeric
#Bilangan dari 2 hingga <= 20 dengan kenaikan 4
> seq(from=2, to=20, by=4) [1] 2 6 10 14 18
> seq(from=2,to=20, length=5) [1] 2.0 6.5 11.0 15.5 20.0
Barisan dari entri yang berulang, dapat dilakukan dengan rep()
> rep (4,5) # mencetak ulang bilangan empat sebanyak 5 kali [1] 4 4 4 4 4
> rep("tidak",4) #mencetakn kata "tidak"
sebanyak 4 kali [1] "tidak" "tidak" "tidak"
"tidak"
> rep(c(2,5),3) # mencetak deret 2 & 5 sebanyak 3 kali
[1] 2 5 2 5 2 5
Vektor Karakter
Penamaan Eksperimen atau unit sample dapat disimpan dalam vektor karakter
> QUADRATS
<-c("Q1","Q2","Q3","Q4","Q5") > QUADRATS
[1] "Q1" "Q2" "Q3" "Q4" "Q5" Cara yang mudah dan baik untuk membangkitkan vektor karakter diatas adalah dengan menggunakan fungsi paste(). Fungsi ini mengkonversi beberapa vektor ke dalam vektor karakter sebelum menggabungkan anggota dari setiap vektor secara bersama-sama ke dalam satu vektor karakter. Argument sep= digunakan untuk menyatakan pemisahan karakter (atau sekumpulan karakter) untuk memberikan jarak antara anggota vektor.
> QUADRATS <-paste("Q",1:10,sep="") > QUADRATS [1] "Q1" "Q2" "Q3" "Q4" "Q5" "Q6" "Q7" "Q8" "Q9" "Q10" > paste ("quad",1:10,sep=".") [1] "quad.1" "quad.2"
"quad.3" "quad.4" "quad.5" "quad.6" "quad.7"
[8] "quad.8" "quad.9" "quad.10"
Vektor karakter dapat digunakan untuk penamaan anggota vektor. Sebagai contoh, kita
dalam menggunakan fungsi names() untuk nama anggota dari vektor TEMPERATUR: > names(TEMPERATURE) <- QUADRATS > TEMPERATURE Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 36.1 30.6 31.0 36.3 39.9 6.5 11.2 12.8 9.7 15.9
Fungsi paste() dapat juga digunakan dalam konjungsi dengan fungsi lain untuk membangkitkan daftar label. Contoh, kita dapat menggabungkan suatu vektor dengan huruf A, B, C, D dan E dimana setiap karakter tersebut diulangi sebanyak dua kali secara berurutan (menggunakan fungsi rep() dengan vektor yang memuat 1 dan 2 untuk menghasilkan vektor karakter yang memiliki label disisinya.
> SITE <-paste(rep(LETTERS[1:5],each=2),1 :2,sep="") > SITE [1] "A1" "A2" "B1" "B2" "C1" "C2" "D1" "D2" "E1" "E2"
Fungsi substr() digunakan untuk mengekstaksi bagian-bagian string (sekumpulan karakter) dalam vektor karakter dan selanjutnya berguna untuk membuat label-label terpotong. Contoh; jika kita mempunyai vektor karakter yang memuat name kota-kota besar di Indonesia dan perlu memberikan kode daerah (tiga huruf pertama) untuk pelabelan grafik:
> INDONESIA <-
c("Jakarta","Bandung","Surabaya" ,"Medan","Makassar","Palembang") > substr(INDONESIA,1,3)
[1] "Jak" "Ban" "Sur" "Med" "Mak" "Pal"
Cara lain, gunakan fungsi abbreviate()
> abbreviate(INDONESIA,minlength=3) Jakarta Bandung Surabaya Medan Makassar Palembang
"Jkr" "Bnd" "Srb" "Mdn" "Mks" "Plm"
Variable kategorial dengan level-level diskrit dapat diwakilkan dengan vektor karakter. Contoh:
> SHADE
<-c("no","no","no","no","no","full"," full","full","full","full")
> SHADE
[1] "no" "no" "no" "no" "no" "full" "full" "full" "full" "full"
Factor
Untuk mengakomodasi variable kategorial (factor), R memiliki tambahan class dari vektor yang disebut factor yang menyimpan vektor yang bersesuaian dengan level dari variable factor. Fungsi factor mengkonversi vektor menjadi vektor factor.
> SHADE <- factor(SHADE) > SHADE
[1] no no no no no full full full full full
Levels: full no
Perhatikan perbedaan output dari vektor factor dan vektor karakter.
Terdapat beberapa cara yang dapat digunakan untuk membangkitkan factor dalam R. penggabungan dari fungsi rep() dan fungsi
concatenation(c()) dapat digunakan
dalam berbagai cara untuk menghasilkan hasil yang indentik. > SHADE <- factor(c(rep("no",5),rep("full", 5))) > SHADE <- factor(rep(c("no","full"),c(5,5) )) > SHADE <- factor(rep(c("no","full"),each=5 )) > SHADE [1] no no no no no full full full full full
Levels: full no
> SHADE
<-gl(2,1,10,c("no","full")) > SHADE
[1] no full no full no full no full no full
Fungsi factor menyusun level factor dalam urutan alphabet, dimana fungsi gl() mengurutkan level factor dalam urutan yang diikutkan dalam ekspresi.
Matriks, lists dan data frame
Matriks Fungsi matrix() > matrix(TEMPERATURE,nrow=5) [,1] [,2] [1,] 36.1 6.5 [2,] 30.6 11.2 [3,] 31.0 12.8 [4,] 36.3 9.7 [5,] 39.9 15.9
Matriks dapat juga digunakan untuk menggabungkan dua atau lebih vektor yang memilik panjang yang sama (dan class). Contoh, misalkan kita punya variable X dan Y, untuk menggabungkannya menjadi matriks digunakan fungsi cbind() atau rbind():
> X <-c(16.92,24.03,7.61,15.49,11.77) > Y <-c(8.37,12.93,16.65,12.2,13.12) > XY <-cbind(X,Y) > XY X Y [1,] 16.92 8.37 [2,] 24.03 12.93 [3,] 7.61 16.65 [4,] 15.49 12.20 [5,] 11.77 13.12 > rbind(X,Y) [,1] [,2] [,3] [,4] [,5] X 16.92 24.03 7.61 15.49 11.77 Y 8.37 12.93 16.65 12.20 13.12
Baris dan kolom dapat diberi nama atau label dengan menggunakan fungsi rownames() dan
colnames():
[1] "X" "Y" > rownames(XY)<-LETTERS[1:5] > XY X Y A 16.92 8.37 B 24.03 12.93 C 7.61 16.65 D 15.49 12.20 E 11.77 13.12 Lists
List digunakan untuk menyimpan kumpulan obyek yang dapat berupa jenis dan panjang yang berbeda. List dikonstruksi menggunakan fungsi
list(). Pada contoh sebelumnya kita telah
membuat bilangan yang disimpan dalam vektor (temperature, shade, dan names dan kota-kota) yang secara actual menggambarkan data atau informasi dari satu eksperiment. Obyek-obyek tersebut dapat dikelompokkan secara bersama-sama sehingga seluruhnya menjadi komponen dari daftar obyek;
> EXPERIMENT <-list(SITE=SITE, COORDINATE=paste(X,Y,sep=","),TE MPERATURe=TEMPERATURE,SHADE=SHAD E + ) > EXPERIMENT $SITE [1] "A1" "A2" "B1" "B2" "C1" "C2" "D1" "D2" "E1" "E2" $COORDINATE [1] "16.92,8.37" "24.03,12.93" "7.61,16.65" "15.49,12.2" "11.77,13.12" $TEMPERATURe Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 36.1 30.6 31.0 36.3 39.9 6.5 11.2 12.8 9.7 15.9 $SHADE [1] no full no full no full no full no full
Levels: no full
Informasi Obyek dan Konversi
Informasi Obyek
Segala sesuatu di R merupakan obyek dan semua obyek memiliki type dan class tertentu. Class dari suatu obyek dapat diuji menggunakan fungsi
class().
> class(TEMPERATURE) [1] "numeric"
Ada juga fungsi is yang berguna untuk mengevaluasi apakah suatu obyek merupakan bagian class atau type tertentu atau bukan. Table 1.3 fungsi query obyek umum dan nilai yang dihasilkannya
Function Returns TRUE:
is.numeric(x) if all elements of x are numeric or integer (x <-c(1,-3.5)) is.null(x) if x is NULL (the object has no length) (x <-NULL) is.logical(x) if all elements of x are logical (x <- c(TRUE,FALSE)) is.character(x) if all elements of x are character strings (x <- c(,A,,,Quad,))
is.vector(x) if the object x is a vector (a single dimension). Returns FALSE if object has any attributes other than names
is.factor(x) if the object x is a factor
is.matrix(x) if the object x is a matrix (2 dimensions but not a data frame) is.list(x) if the object x is a list
is.data.frame(x) if the object x is a data frame
is.na(x) for each missing (NA) element in x (x <- c(NA,2))
! (‘not’) character as a prefix converts the above functions into ‘is.not.’
Obyek dalam R juga ada yang memiliki atribut, bilangan dan type dari atribut tersebut berbeda pada setiap obyek. Contoh, obyek matriks mempunyai jumlah dimensi tertentu yang dikenal dengan baris dan kolom. Atribut dari suatu obyek dapat ditampilkan dengan menggunakan fungsi attributes():
> attributes(XY) $dim [1] 5 2 $dimnames $dimnames[[1]] [1] "A" "B" "C" "D" "E" $dimnames[[2]] [1] "X" "Y"
Dengan cara yang sama, dapat juga dengan fungsi attr(), digunakan untuk menampilkan dan individual atribut dari suatu obyek.
> attr(XY,"dim") [1] 5 2 > attr(XY,"description") <-"coodinates of quadrats" > XY X Y A 16.92 8.37 B 24.03 12.93 C 7.61 16.65 D 15.49 12.20 E 11.77 13.12 attr(,"description") [1] "coodinates of quadrats" Konversi Obyek
Obyek dalam R dapat dikonversi ke obyek lain menggunakan fungsi as.
Function Converts object to
as.numeric(x) a numeric vector (‘integer’ or ‘real’). Factors converted to integers.
as.null(x) a NULL
as.logical(x) a logical vector. Values of >1 converted to TRUE, otherwise FALSE as.character(x) a character vector
as.factor(x) a factor. This is an abbreviated version of factor
as.matrix(x) a matrix. Any non-numeric elements result in all matrix elements being converted to character strings
as.list(x) a list
as.data.frame(x) a data frame. Matrix columns and list columns are converted into a separate vectors of the data frame, and character vectors are converted into factors. All previous attributes are removed
Meng-Indeks Vektor, Matriks dan Lists
Meng-indeks Vektor
Memungkinkan untuk mencetak subhimpunan dari suatu vektor dengan vektor indeks. Terdapat empat bentuk umum dari mengindeks vektor yang digunakan untuk mengekstrak sub-himpunan dari vektor:
Vektor Bilangan Bulat Positif. Suatu himpunan
bilangan bulat yang mengindikasikan dimana elemen dari suatu vekto yang akan dipilih. Pemilihan elemen merupakan concatenated atau penggabungan dalam urutan yang spesifik.
(i) Memilih elemen ke-i
> TEMPERATURE[2] Q2
30.6
(ii) Memilih n elemen mulai dari elemen m
> TEMPERATURE[2:5] Q2 Q3 Q4 Q5 30.6 31.0 36.3 39.9
(iii) Memilih himpulan elemen tertentu
> TEMPERATURE[c(1,5,6,9)] Q1 Q5 Q6 Q9
36.1 39.9 6.5 9.7
Vektor Bilangan Bulat Negatif. Himpunan bilangan bulat yang mengindikasikan elemen vektor yang akan diekseksui dari concatenated (penggabungan)
(iv) Memilih semua tapi tidak termasuk elemen ke-n > TEMPERATURE[-2] Q1 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 36.1 31.0 36.3 39.9 6.5 11.2 12.8 9.7 15.9
Vektor karakterk string. Mengindeks vektor
bentuk ini hanya mungkin untuk vektor yang elemennya telah diberi nama. Suatu vektor nama elemen dapat digunakan untuk memilih element untuk digabungkan
(i) Memilih penamaan elemen > TEMPERATURE["Q1"] Q1
36.1
(ii) Memilih nama elemen
> TEMPERATURE[c("Q1","Q4")] Q1 Q4
36.1 36.3
Vektor Nilai Logika. Vektor nilai logika harus
memiliki panjang yang sama sebagai suatu vektor subhimpunan dan biasanya merupakan hasil dari suatu evaluasi logika. Nila logika T (benar) dan F (salah) secara berurutan untuk dikaitkan dengan elemen vektor utama dari penggabungan.
- Memilih elemen yang bernilai benar BENAR
> TEMPERATURE[TEMPERATURE <15] Q6 Q7 Q8 Q9
> TEMPERATURE[SHADE=="no"] Q1 Q3 Q5 Q7 Q9 36.1 31.0 39.9 11.2 9.7 - Memilih elemen untuk beberapa logika
yang bernilai BENAR
> TEMPERATURE[TEMPERATURE<34 & SHADE=="no"]
Q3 Q7 Q9 31.0 11.2 9.7
- Memilih Suatu elemen atau logika lain yang bernilai BENAR
> TEMPERATURE[TEMPERATURE < 10 | SHADE=="no"]
Q1 Q3 Q5 Q6 Q7 Q9 36.1 31.0 39.9 6.5 11.2 9.7
6. Daftar Pustaka
M. Logan. 2010. Biostatistical Design and Analysis Using R. John Wiley & Sons. New York
John. M. Chambers, T. Hothron, 2015. Multiple Factor Analysis by Example Using R. CRC Press, California.
R.S. Kennet, S.H.Zacks, 2014. Modern Industrial Statistics With Application in R, MINITAB and JMP. John Wiley & Sons, New York.
URL: http://www.r-project.org/. tgl. 16 Desember 2014
URL: http://journal.r-project.org/. tgl. 16 Desember 2014
J.M. Chambers, 2014. Software for Data Analysis-Programming With R. John Wiley & Sons. New York.