R is a scripting language for statistical data manipulation and analysis. It was inspired by, and is mostly compatible with, the statistical language S developed by AT&T. The name S, for statistics, was an allusion to another programming language with a one-letter name developed at AT&T—the famous C language. S later was sold to a small firm, which added a graphical user interface (GUI) and named the result S-Plus. (Matloff, 2011)
Selain bahasa skrip, R disebut juga bahasa interpreter dimana saat pengguna memasukkan suatu input pada konsol R atau menjalankan sebuah skrip R, mesin interpreter R akan mengeksekusi perintah tersebut. R juga bersifat interaktif dimana setiap perintah yang ditulis dapat langsung dievaluasi kemudian hasilnya dapat langsung disajikan pada layar.
Sebagai contoh, dengan memasukkan perintah perkalian berikut pada konsol R:
Ketika kita menekan tombol enter, R akan mengeksekusi dan menampilkan hasilnya
## [1] 20
Konsol R diawali tanda >, yang menunjukkan bahwa R
siap menerima perintah baru. Jika perintah dimasukkan tidak lengkap,
maka tanda tersebut akan berubah menjadi tanda +.
Semua perintah atau teks yang ditulis setelah tanda #
tidak akan dieksekusi oleh R. Biasanya ini berguna untuk memberikan
komentar atau catatan
## [1] 20
Dalam R, sangat disarankan untuk menggunakan tanda <-
sebagai operator assigment. obj <- expr berarti
masukkan nilai hasil dari operasi di sisi kanan (expr) ke
dalam objek di sisi kiri (obj). Misalnya:
Artinya kita memasukkan nilai 20 ke dalam objek
x. Contoh lain
Artinya kita memasukkan hasi dari operasi 100 + 50 ke
dalam objek y. Selain dengan operator <-,
kita juga dapat menggunakan operator = atau
->.
Untuk menampilkan objek dalam layar, cukup tuliskan nama objek lalu enter.
## [1] 20
## [1] 150
Atau bisa juga dengan perintah print()
## [1] 20
## [1] 150
Segala hal dalam R dipandang sebagai objek, misalnya data, fungsi,
dan lain-lain. Objek-objek tersebut dapat “diberi nama” dengan apapun
yang kita mau. Pada contoh sebelumnya, kita mempunyai objek dengan nama
x dan y. Meskipun demikian, ada beberapa
aturan penamaan objek dalam R yang harus dipenuhi, yaitu:
c, df, rnorm dan
lainnya.Ketika membuat sebuah program dalam R (atau bahasa pemrograman apapun), disarankan untuk menggunakan penamaan yang lazim dan konsisten, seperti:
adjustcolorplot.newnumeric_versionaddTaskCallbackSignatureMethodNote: meskipun diizinkan, penggunaan underscore sebaiknya dihindari karena sedikit sekali yang menerapkannya pada R.
R bersifat case-sensitive baik dalam penamaan objek maupun
isi dari objek tersebut. Huruf kecil dan huruf besar menunjukkan hal
berbeda. ABC berbeda dengan abc, berbeda pula
dengan Abc maupun AbC dan seterusnya.
Sesuai namanya, working directory adalah folder atau directory aktif tempat sesi R tersebut sedang berjalan. Untuk mengetahui folder kerja, bisa menggunakan perintah
## [1] "E:/Asistensi/STA1561-ganjil-23/prak-paralel-selasa"
Untuk mengganti folder kerja, dapat menggunakan perintah
Perhatikan path dipisahkan oleh tanda /, atau
bisa juga dengan tanda \\.
Untuk mengakses file yang berada dalam folder kerja, cukup menuliskan nama filenya saja, misalnya
R mempunyai beberapa jenis mode objek dasar, atau disebut sebagai “atomic” class dari objek, yaitu:
character, misalnya "ipb",
"mahasiswa", "stastika"
numeric, misalnya 12, 2.3,
1.2e-2
complex, misalnya 1.2e6+2i
logical, misalnya T, F,
TRUE, FALSE
Objek Angka:
Angka dalam R umumnya diperlakukan sebagai objek numerik (atau angka
riil). Artinya, sebuah angka yang terlihat sebagai “1” atau “2”,
sebetulnya direpresentasikan oleh R sebagai objek numerik, seperti
“1.00” atau “2.00”. Apabila kita menginginkan objek integer, kita harus
menambahkan akhiran L. Misal untuk mendapatkan integer
1 harus ditulis 1L.
Terdapat beberapa tipe objek data standar dalam R, yaitu:
Vector: tipe sederhana dari objek data dalam R di mana setiap elemennya mempunyai mode yang sama
Factor: vektor dengan anggota/elemennya berupa kategori
Matrix: vektor yang berdimensi dua yaitu baris dan kolom
Array: tipe objek yang dapat menyimpan data lebih dari dua dimensi
Data frame: objek yang menyimpan data dalam bentuk tabular (baris dan kolom)
List: vektor dengan anggota/elemennya berupa objek. Mode dari elemen list boleh berbeda-beda
Vector merupakan objek data paling sederhana dalam R dan digunakan oleh hampir semua fungsi aritmatik. Dalam vector, mode anggota/elemen adalah sama. Ada beberapa cara membuat vector, di antaranya:
Banyak cara membuat vector. Beberapa di antaranya adalah menggunakan
perintah c(), seq() dan
rep().
c()Sebuah vektor dapat dibuat dengan fungsi c() di mana
setiap elemen dipisahkan oleh tanda koma. Misalnya.
## [1] 0.5 0.6
Contoh lain
b <- c(TRUE, FALSE) ## logical
c <- c(T, F) ## logical
d <- c("a", "b", "c") ## character
e <- 9:29 ## integer
f <- c(1+0i, 2+4i) ## complexKadang kita memasukkan objek dengan mode berbeda kedalam suatu vektor, baik karena disengaja maupun tidak. Apa yang akan terjadi?
## [1] "1.7" "a"
## [1] 1 2
## [1] "a" "TRUE"
Untuk kasus seperti itu, R akan mengkonversi data ke dalam mode yang
paling sesuai. Pada contoh pertama, ada dua kemungkinan mode yaitu
numerik dan character. Karena mengkonversi yang memungkinkan adalah
konversi numerik ke karakter (bukan sebaliknya), maka akan mengkonversi
1.7 menjadi character "1.7".
seq()Fungsi seq() digunakan untuk membuat vector yang berisi
angka berurutan. Misalnya
Vector 1 sampai dengan 10, dengan incremental 1
## [1] 1 2 3 4 5 6 7 8 9 10
Atau bisa ditulis dengan perintah berikut
## [1] 1 2 3 4 5 6 7 8 9 10
Vector 1 sampai dengan 10, dengan incremental 2
## [1] 1 3 5 7 9
Element pada vector dapat diakses melalui indeksnya dengan
menggunakan operator [ ]. Dua contoh berikut mengambil
elemen pertama serta elemen ke-2 dan ke-3 dari vector
## [1] 10
## [1] 20 30
Fungsi lain sering digunakan dalam vector adalah
length() dan class(). Fungsi
length() berguna untuk mengetahui pajang atau banyaknye
elemen dari suatu vector sedangkan class() untuk mengetahi
class atau mode dari suatu vector.
Faktor digunakan untuk merepresentasikan data kategorik, baik
terurut/ordered maupun tidak terurut/unordered. Faktor
dapat dianggap sebagai vektor di mana setiap elemennya memiliki label.
Objek faktor dapat dibuat dengan fungsi factor().
## [1] SD SMA SMP SD SMA SMP SD SMP
## Levels: SD SMA SMP
## [1] SD SMA SMP SD SMA SMP SD SMP
## Levels: SD SMP SMA
## [1] SD SMA SMP SD SMA SMP SD SMP
## Levels: SD < SMP < SMA
## [1] 8
## [1] "factor"
Matriks merupakan vector yang berdimensi dua yaitu baris dan kolom. Matriks dapat dibuat dengan mengubah dimensi dari suatu vector.
Matriks dapat dibentuk dengan perintah matrix(). Secara
default, matriks dibentuk dengan cara column-wise
(byrow = FALSE), yaitu dengan mengisi kolom pertama
terlebih dahulu, dari atas ke bawah, dilanjutkan kolom berikutnya.
Misalnya untuk membuat matriks berukuran 2 x 3 :
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
Atau bisa dengan menambahkan argumen byrow = TRUE
sehingga akan mengisi baris pertama terlebih dahulu, mulai dari kiri ke
kanan, dilanjutknya ke baris berikutnya.
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
Matriks dapat dibentuk secara langsung dari vector dengan cara menambahkan atribut dimensi.
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
Cara lain membentuk matriks adalah dengan penggabungan kolom dengan
fungsi cbind() dan penggabungan baris dengan fungsi
rbind().
## x y
## [1,] 1 10
## [2,] 2 11
## [3,] 3 12
## [,1] [,2] [,3]
## x 1 2 3
## y 10 11 12
Array adalah struktur data yang dapat menampung data multidimensi. Dalam R, jika matriks hanya mempunyai dua dimensi, maka array dapat memiliki lebih dari 2 dimensi.
v1 <- c(5, 10, 15, 20)
v2 <- c(25, 30, 35, 40, 45, 50, 55, 60)
arr <- array(c(v1, v2), dim =c(4,4,3))Untuk mengetahui dimensi dari suatu array, dapat menggunakan fungsi
dim()
## [1] 4 4 3
Baris dalam data frame merepresentasikan pengamatan/observasi, sedangkan kolom mereprentasikan peubah/variabel. Setiap elemen dalam kolom yang sama mempunyai mode yang sama, namun antar kolom bisa mempunyai mode yang berbeda.
Data frame dapat dibuat menggunakan fungsi
data.frame():
List merupakan bentuk khusus dari vector yang memungkinkan elemennya bisa berupa objek dengan mode yang berbeda-beda. Elemen-elemen dari list dapat berupa vector, matriks, array, list atau gabungan beberapa struktur data.
List dapat dibuat dengan menggunakan fungsi list()
s <- "A"
v <- c(1:20)
m <- matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE)
df <- data.frame(numbers = c(10, 20, 30, 40),
text = c("a", "b", "c", "a"))
l <- list(s, v, m, df)
l## [[1]]
## [1] "A"
##
## [[2]]
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
##
## [[3]]
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
##
## [[4]]
## numbers text
## 1 10 a
## 2 20 b
## 3 30 c
## 4 40 a
Ada beberapa missing value dalam R, yaitu:
NULL
Sebuah objek yang diperoleh ketika suatu ekspresi atau fungsi menghasilkan nilai yang tidak terdefinisi (undefined value)
NA
Singkatan dari “Not Available”. Merupakan sebuah logical untuk mengindikasikan missing value.
NaN
Singkatan dari “Not a Number”. Merupakan sebuah logical untuk angka dan merupakan gambaran imajiner dari nilai nilai yang sangat kompleks.
Inf / -Inf
Singkatan dari infinity atau tidak hingga. Merupakan angka yang sangat besar atau sangat kecil.
## [1] FALSE FALSE TRUE FALSE FALSE
## [1] FALSE FALSE FALSE FALSE FALSE
## [1] FALSE FALSE TRUE FALSE FALSE
Objek R dapat mempunyai nama. Demikian juga dengan setiap elemen
dalam sebuah objek data. Hal ini sangat berguna ketika menuliskan kode
dan menjelaskan objek. Untuk memberikan nama bagi elemen-elemen dari
vector, dapat menggunakan fungsi names()
## NULL
## New York Seattle Los Angeles
## 1 2 3
## [1] "New York" "Seattle" "Los Angeles"
Cara yang sama untuk list
## NULL
## $teks
## [1] "A"
##
## $vektor
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
##
## $matriks
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
##
## $tabel
## numbers text
## 1 10 a
## 2 20 b
## 3 30 c
## 4 40 a
## [1] "teks" "vektor" "matriks" "tabel"
Matriks dapat mempunyai nama kolom dan barisnya dengan menggunakan
fungsi dimnames()
## c d
## a 1 3
## b 2 4
Penamaan kolom dan baris pada matriks bisa dilakukan terpisah
menggunakan fungsi colnames() dan
rownames()
## h f
## x 1 3
## z 2 4
Seperti halnya matriks, kolom dan baris pada data frame juga dapat
diberikan nama dengan menggunakan fungsi names() dan
rownames(). Perhatikan ada perbedaan fungsi yang
digunakan.
Note: Ketika membuat dataframe, R akan memberikan nama untuk kolom-kolom yang terbentuk. Hanya saja kadang nama yang diberikan tidak sesuai dengan yang diinginkan.
## [1] "c.10..20..30..40." "c..a....b....c....a.."
Pemilihan atau percabangan merupakan bagian penting dalam pemrograman
Dalam R, hal ini dapat dilakukan dengan menggunakan perintah
if ... else.
if {-}Sebuah pernyataan atau statement di dalam if akan
dieksekusi jika kondisinya bernilai TRUE. Jika
FALSE, maka tidak akan ada pernyataan yang dieksekusi.
Contoh
## [1] "Positive"
if ... else {-}Jika kondisi TRUE, maka statement1 akan
dieksekusi. Jaka salah maka statement2 akan dieksekusi.
Contoh
## [1] "Negative"
Ini sama saja artinya dengan
## [1] "Negative"
if ... else if ... else {-}Jika kondisi benar, maka statement1 akan dieksekusi.
Jaka salah maka akan periksa kondisi kedua. Jika benar maka
statement2 akan dieksekusi. Jika salah maka
statement3 akan dieksekusi
Contoh:
## [1] "Negative"
Loop berfungsi untuk mengulang perintah atau blok perintah. Dalam R,
ada beberapa fungsi perintah looping, yaitu for,
while, repeat
for loopfor loop digunakan untuk mengiterasi suatu vektor
Sebagai contoh membuat iterasi penjumlahan angka genap
x <- c(2,5,3,9,8,11,6)
count <- 0
total <- 0
for (val in x) {
if(val %% 2 == 0) {
count = count+1
total = total + val
}
}
cat("banyaknya angka genap:", count)## banyaknya angka genap: 3
##
## penjumlahan angka genap: 16
while loopwhile loop digunakan untuk melakukan iterasi selama
kondisi/expression tertentu terpenuhi.
Contoh
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
break dan nextPerintah break digunakan di dalam loop untuk
menghentikan iterasi. Sedangkan perintah next digunakan
untuk melewati sebuah iterasi.
Contoh
## [1] 1
## [1] 2
## [1] 1
## [1] 2
## [1] 4
## [1] 5
repeat looprepeat loop digunakan untuk iterasi blok perintah
berulang kali. Dalam repeat, tidak ada kondisi untuk keluar
dari loop. Untuk itu, kita harus menggunakan perintah break
secara eksplisit atau looping akan terus berjalan (infinite loop)
Contoh
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
Statistika dan Sains Data, IPB University, alfanugraha@apps.ipb.ac.id↩︎