Bab 2 Dasar Pemrograman R
Pada bab ini akan membahas hal-hal dasar tentang R yang harus diketahui dan dikuasai. Hal yang paling sederhana yang dapat dilakukan R adalah sebagai kalkulator. Coba Anda ketikan perintah di bawah ini pada console RStudio dan tekan tombol Enter setelah selesai.
2 + 4
## [1] 6
Akan muncul hasil [1] 6
. Hasil [1]
menunjukkan bahwa yang ditampilkan adalah dari elemen pertama. Hal ini akan dibahas di bagian 2.5.
Tanda >
adalah prompt yang menunjukkan bahwa R sedang dalam posisi siap menerima perintah baru. Jika perintah belum lengkap maka akan berganti menjadi tanda +
. Artinya ada perintah atau bagian script yang belum selesai.
> 2 +
+
Perhatikan setelah Anda tekan tombol Enter maka kursor di R yang sebelumnya >
berganti +
yang menandakan bahwa perintah belum lengkap. Maka jika Anda kembali menuliskan bilangan lain, misalkan 4
dan tekan tombol Enter maka prompt di R akan kembali menjadi >
setelah menuliskan hasilnya karena perintah sudah lengkap dan selesai.
> 2 +
+ 4
## [1] 6
R adalah bahasa pemrograman yang case-sensitive. Artinya perbedaan huruf kapital dan huruf kecil sangat berpengaruh. Karena itu, penulisan nama objek atau nilai berupa karakter sangat tergantung dari kapitalisasinya. Perhatikan perbedaan dari kedua contoh berikut ini.
a <- 3
a
## [1] 3
A
## Error: object 'A' not found
Misalnya Anda membuat sebuah objek bernama a
dengan nilai sebuah konstanta. Ketika Anda ingin mengambil nilai dari objek tersebut maka Anda hanya bisa memanggil dengan nama yang sama persis. Anda tidak bisa memanggil objek tersebut dengan nama lain meskipun ketika Anda mengucapkan dengan suara pengucapan yang sama. Anda tidak bisa memanggil objek a
tersebut dengan A
.
Ketika objek yang Anda panggil belum ada di session atau workingspace R saat ini maka akan muncuk error seperti contoh di atas.
2.1 Assignment
Bahasa pemrograman R mempunyai sedikit perbedaan dengan bahasa pemrograman pada umumnya. Salah satunya adalah pada operator assignment. Hampir semua bahasa pemrograman lain menggunakan tanda =
sebagai operator assignment. Di R, yang utama dan paling banyak digunakan oleh pengguna R adalah operator panah kiri (<-
). obj <- expr
berarti “masukkan nilai hasil dari operasi di sisi kanan (expr
) ke dalam objek di sisi kiri (obj
)”. Pada contoh berikut, saya ingin memasukkan nilai numerik 5
ke objek yang disebut x
.
x <- 5
x
## [1] 5
Apakah tidak bisa menggunakan operator =
sebagai operator assignment? Tentu saja Anda juga bisa menggunakannya.
x = 5
Hal ini sangat membantu jika Anda seorang programmer yang menggunakan bahasa pemrograman lain yang menggunakan operator =
sebagai operator assignment. Jadi Anda tidak perlu bingung dengan “Kapan saya harus menggunakan<-
atau =
?”. Tapi saya mendorong Anda untuk terbiasa menggunakan <-
saat membuat program menggunakan R. Jika Anda menggunakan RStudio, Anda dapat menuliskan operator <-
dengan menekan tombol ALT
+ -
.
Jika Anda ingin mengetahui nilai suatu objek cukup panggil objek tersebut atau gunakan fungsi print()
.
x
## [1] 5
# or
print(x)
## [1] 5
2.2 Operator Assignment Lainnya
Ada beberapa operator assignment lainnya yang dapat Anda gunakan di R. Di bawah ini adalah daftar operator assignment.
Operator | Cakupan | Penjelasan |
---|---|---|
<- | lokal/global | nilai dari sebelah kanan dimasukkan ke dalam objek di sebelah kiri. |
-> | lokal/global | nilai dari sebelah kiri dimasukkan ke dalam objek di sebelah kanan. |
<<- | global | nilai dari sebelah kanan dimasukkan ke dalam objek global di sebelah kiri. |
->> | global | nilai dari sebelah kiri dimasukkan ke dalam objek global di sebelah kanan. |
Sekarang, mari kita lihat operator ->
.
# Contoh 1
x <- 5
5 -> x
x
## [1] 5
# Contoh 1
y <- 2 + 4
2 + 4 -> y
y
## [1] 6
Seperti yang Anda lihat, operator ->
memiliki sisi yang berlawanan dengan <-
. Nilai atau ekspresi yang mengembalikan nilai ada di sisi kiri, sedangkan objek di sisi kanan. Untuk dua operator assignment yang lain kita membahasnya di pembahasan function (Bab 2.11) dalam R. Karena mereka biasanya hanya digunakan dalam sebuah fungsi.
Jika Anda memasukan nilai baru ke dalam sebuah objek yang sama maka nilai yang sebelumnya akan dihapus dan digantikan dengan nilai yang baru.
# Nilai x sebelumnya
x
## [1] 5
# Nilai x yang baru
x <- 8 + 2
x
## [1] 10
# Nilai x yang baru
x <- x + 5
x
## [1] 15
Ketika menggunakan R, setiap yang ada di R disebut objek. Jenis-jenis objek data yang ada di R adalah vector, factor, matriks, array, dataframe, list dan objek berupa function.
2.3 Penamaan Objek
Aturan penamaan objek di R, seperti vector (2.5), matriks (2.7), dataframe (2.9) dan lain-lain, hampir sama dengan aturan penamaan pada bahasa pemrograman lain. Namun ada beberapa aturan khusus yang terdapat di R. Berikut aturan penamaan objek di R.
- Menggunakan kombinasi alfabet (a-z, A-Z), angka (0-9), titik atau underscore.
- Diawali alfabet, titik atau underscore. Tidak boleh diawali dengan angka.
- Tidak mengandung spasi, tab atau karakter khusus seperti
!
,@
,#
dan lainnya. - Sebaiknya tidak menggunakan beberapa penamaan atau nilai yang sudah digunakan oleh R (function dan keyword lainnya). Misalnya
c
,q
,TRUE
,FALSE
,df
,dt
,rnorm
,runif
,rf
,exp
, dan lain-lain. Untuk mengetahui nama-nama yang sudah digunakan oleh R Anda dapat mengetikkan perintah?reserved
di console RStudio Anda.
2.4 Working Directory
Untuk mengetahui di folder mana Anda bekerja dengan R saat ini, Anda dapat gunakan fungsi getwd()
.
getwd()
## [1] "D:/aephidayatuloh/R/buku/introR_id"
Untuk mengatur lokasi folder Anda bekerja, Anda dapat gunakan fungsi setwd()
. Misalnya Anda ingin mengganti working directory menjadi “D:/aephidayatuloh/folder”.
setwd("D:/aephidayatuloh/folder")
Dengan begitu Anda dapat mengakses file atau data di dalam directory tersebut lebih mudah dan praktis. Atau Anda jg dapat melakukannya dengan cara membuat sebuah project di RStudio seperti yang sudah dibahas di bagian 1.3.1.
2.5 Vector
Vector adalah objek data paling sederhana yang ada di dalam R. Secara umum jenis vector terbagi 2, yaitu numeric dan character. Ada banyak sekali cara untuk membuat sebuah vector di R. Di bagian ini akan dibahas beberapa cara yang banyak dan mungkin akan sering Anda gunakan.
2.5.1 Fungsi c()
Fungsi yang paling sering digunakan untuk membuat sebuah vector adalah dengan menggunakan fungsi c()
.
x <- c(2, 1, 5, 3, 1)
x
## [1] 2 1 5 3 1
Pada script di atas, dibuat sebuah objek x
berupa vector numeric. Setiap elemen dipisah menggunakan tanda koma (,
). Fungsi ini dapat digunakan untuk membuat vector numeric atau character. Indeks di R dimulai dari 1, tidak seperti kebanyakan bahasa pemrograman lain yang indeksnya dimulai dari 0. Hal ini cukup memudahkan pengguna karena umumnya manusia menghitung mulai dari 1, bukan dari 0.
ketika Anda ingin mengambil elemen ke 2 dari vector x
, maka Anda dapat menjalankan perintah
x[2]
## [1] 1
2.5.2 Tanda titik dua/colon (:
)
Untuk membuat sebuah vector numeric berurutan secara meningkat atau menurun. Lihat contoh berikut ini.
x <- 1:10 # 1 sampai 10
x
## [1] 1 2 3 4 5 6 7 8 9 10
Fungsi dari operator :
pada contoh di atas adalah membuat vector numeric dengan nilai dari 1 s/d 10. Tentu saja operator increment ini hanya dapat digunakan untuk numeric dan meningkat sebesar 1 nilai. Operator ini dapat juga digunakan untuk membuat vector dengan nilai menurun.
# membuat vector numeric dengan nilai dari 10 s/d -10 secara menurun 1
x <- 10:-10 # 10 sampai -10
x
## [1] 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10
2.5.3 Fungsi seq()
Fungsi ini dapat digunakan untuk membuat vector berurutan dan dengan increment tertentu.
x <- seq(from = 1, to = 10) # 1 sampai 10 dengan increment 1 (default by = 1)
x
## [1] 1 2 3 4 5 6 7 8 9 10
Secara default increment dari fungsi seq()
adalah by = 1
. Jika Anda ingin nilai increment lain maka hanya perlu mengganti nilai pada argumen by
. Fungsi ini juga hanya dapat digunakan untuk membuat vector numeric.
x <- seq(from = 1, to = 20, by = 2) # 1 sampai 20 dengan increment 2
x
## [1] 1 3 5 7 9 11 13 15 17 19
x <- seq(from = 1, to = 10, length.out = 7) # 1 sampai 10, sebanyak 7 elemen, increment mengikuti
x
## [1] 1.0 2.5 4.0 5.5 7.0 8.5 10.0
x <- seq(from = 1, to = 10, along.with = 1:4) # 1 sampai 10, sebanyak elemen dari vector lain
x
## [1] 1 4 7 10
2.5.4 Mengambil satu kolom dari dataframe atau matriks
Mengambil sebuah kolom dari sebuah dataframe akan dibahas lebih jauh di bagian dataframe (2.9). Dengan menggunakan tanda dolar $
dan diikuti dengan nama kolom yang akan diambil dari dataframe tersebut.
mtcars$mpg
## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4 14.7 32.4 30.4
## [20] 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
Dari dataframe
mtcars
diambil semua nilai yang ada di kolommpg
Cara ini akan dicontohkan lebih banyak pada bagian-bagian selanjutnya di bab ini.
2.5.5 Fungsi unlist()
Fungsi ini berguna untuk menjadikan sebuah objek list menjadi sebuah vector. Pembahasan lebih lanjut akan dibahas di bagian 2.10.
x <- list(mtcars$mpg, mtcars$disp)
x
## [[1]]
## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4 14.7 32.4 30.4
## [20] 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
##
## [[2]]
## [1] 160.0 160.0 108.0 258.0 360.0 225.0 360.0 146.7 140.8 167.6 167.6 275.8 275.8 275.8 472.0 460.0
## [17] 440.0 78.7 75.7 71.1 120.1 318.0 304.0 350.0 400.0 79.0 120.3 95.1 351.0 145.0 301.0 121.0
x <- unlist(x)
x
## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4
## [17] 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
## [33] 160.0 160.0 108.0 258.0 360.0 225.0 360.0 146.7 140.8 167.6 167.6 275.8 275.8 275.8 472.0 460.0
## [49] 440.0 78.7 75.7 71.1 120.1 318.0 304.0 350.0 400.0 79.0 120.3 95.1 351.0 145.0 301.0 121.0
Fungsi unlist()
menggabungkan semua list
menjadi sebuah vector.
Catatan penting untuk vector: walaupun ditampilkan ke samping, dimensi vector di R sebenarnya ke bawah. Bayangkan untuk sebuah vector seperti satu kolom di Ms Excel.
Semua contoh di atas untuk membuat vector adalah vector numeric. Vector numeric adalah vector yang semua elemennya bernilai dan bertipe numeric.
2.5.6 Fungsi rep()
Dengan fungsi rep()
Anda dapat membuat sebuah vector dengan mengulang-ulang nilai yang diinginkan sebanyak yang dibutuhkan.
# Membuat sebuah vector numeric yang semua elemennya bernilai 3 sebanyak 10 elemen
x <- rep(3, 10)
x
## [1] 3 3 3 3 3 3 3 3 3 3
2.5.7 Vector character
Vector character adalah vector yang semua elemennya bertipe character.
y <- c("a", "A", "d", "c")
y
## [1] "a" "A" "d" "c"
Jika ketika membuat sebuah vector bernilai numeric namun ada satu saja elemennya bertipe character maka semua elemennya akan bertipe character.
c(1, 2, 3, 5, "a")
## [1] "1" "2" "3" "5" "a"
Di R ada 2 buah vector khusus yang bertipe character, yaitu letters
dan LETTERS
.
letters
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x"
## [25] "y" "z"
LETTERS
## [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X"
## [25] "Y" "Z"
Dua buah vector atau lebih dapat digabungkan dengan fungsi c()
. Namun, jika salah satu vector bertipe character, maka vector hasil gabungan akan menjadi vector character. Contoh di bawah ini menggabungkan vector x
dan y
. Vector x
adalah vector numeric, sedangkan y
adalah vector character. Karena ada satu atau lebih elemen yang berupa character, maka ketika x
dan y
digabungkan akan menjadi vector character.
c(x, y)
## [1] "3" "3" "3" "3" "3" "3" "3" "3" "3" "3" "a" "A" "d" "c"
Cara lain yang dapat digunakan untuk membuat vector character adalah menggunakan fungsi paste()
, paste0()
atau sprintf()
. Jalankan dan perhatikan perbedaan dari contoh perintah di bawah ini.
paste("A", 1:5)
## [1] "A 1" "A 2" "A 3" "A 4" "A 5"
paste0("A", 1:5)
## [1] "A1" "A2" "A3" "A4" "A5"
sprintf("A%s", 1:5)
## [1] "A1" "A2" "A3" "A4" "A5"
2.6 Factor
Factor merupakan bentuk lebih luas dari vector. Biasanya factor lebih sering digunakan untuk menyimpan data nominal atau ordinal. Misalnya vector character yang berisi "male"
dan "female"
. Pada vector character, nilainya adalah "male"
dan "female"
seperti terlihat apa adanya. Namun pada factor, tampilan dari isi datanya mungkin "male"
dan "female"
tetapi isi dari factor adalah pengkodean numerik. Misal untuk "female"
nilai sebenarnya adalah 1
, sedangkan "male"
berniali 2
.
## [1] SD SMA SMP SMP SD SMA SD SMP
## Levels: SD SMA SMP
Nilai sebenarnya dari factor tersebut adalah
print.default(fc)
## [1] 1 2 3 3 1 2 1 3
Factor mempunyai level, secara default levelnya adalah berdasarkan urutan alfabet. Untuk merubah level dari sebuah factor, gunakan argumen levels =
.
## [1] SD SMA SMP SMP SD SMA SD SMP
## Levels: SD SMP SMA
## [1] SD SMA SMP SMP SD SMA SD SMP
## Levels: SD < SMP < SMA
2.7 Matriks
Matriks adalah objek di R yang memiliki 2 dimensi, baris (row/m) dan kolom (column/n), dan tipe nilainya sama. Jika ketika membuat sebuah matriks elemennya memiliki minimal 1 elemen bertipe character maka seluruh matriks tersebut akan bertipe character. Membuat matriks di R menggunakan vector yang dikonversi dimensinya. Karena seperti yang sudah diketahui bahwa sebuah vector di R tidak mempunyai dimensi, tetapi dapat dibayangkan seperti matriks berukuran m baris dan 1 (satu) kolom.
Misalnya kita memiliki sebuah vector numerik x
dengan banyaknya elemen sebanyak 16 seperti berikut ini.
x <- c(1, 2, 5, 4, 2, 2, 3, 3, 5, 3, 1, 0, 4, 3, 0, 6)
x
## [1] 1 2 5 4 2 2 3 3 5 3 1 0 4 3 0 6
length(x)
## [1] 16
Karena vector x
memiliki 16 elemen, maka dimensi matriks yang dapat dibuat adalah 2 angka yang hasil perkaliannya menghasilkan nilai 16. Salah satunya adalah 4 x 4 = 16
. Untuk membuat matriks di R, kita dapat gunakan fungsi matrix()
dengan argumen pertama adalah vector. Argumen untuk menentukan ukuran matriks kita dapat gunakan ncol
atau nrow
. Bisa kita gunakan keduanya atau hanya salah satu saja. Misalnya kita gunakan nrow = 4
agar matriks yang dihasilkan matriks persegi berukuran 4x4 karena 4 x 4 = 16
. Artinya sama saja dengan kita menggunakan ncol = 4
karena dengan nrow = 4
secara otomatis ncol = 4
.
m <- matrix(data = x, nrow = 4)
m
## [,1] [,2] [,3] [,4]
## [1,] 1 2 5 4
## [2,] 2 2 3 3
## [3,] 5 3 1 0
## [4,] 4 3 0 6
Sedangkan jika kita pilih nrow = 8
maka matriks akan memiliki ukuran 8x2
.
m <- matrix(data = x, nrow = 8)
m
## [,1] [,2]
## [1,] 1 5
## [2,] 2 3
## [3,] 5 1
## [4,] 4 0
## [5,] 2 4
## [6,] 2 3
## [7,] 3 0
## [8,] 3 6
Bisakah kita memilih ukuran lain? Secara teori tentu saja tidak bisa karena perkalian dua bilangan bulat yang menghasilkan nilai 16 hanya 2x8, 8x2, dan 4x4. Namun di R kita bisa memilih ukuran yang tidak memenuhi aturan tersebut. Anda perlu berhati-hati karena bisa jadi hasilnya tidak sesuai yang diharapkan. Misalnya kita pilih ukuran 8x3.
m <- matrix(data = x, nrow = 8, ncol = 3)
## Warning in matrix(data = x, nrow = 8, ncol = 3): data length [16] is not a sub-multiple or multiple
## of the number of columns [3]
m
## [,1] [,2] [,3]
## [1,] 1 5 1
## [2,] 2 3 2
## [3,] 5 1 5
## [4,] 4 0 4
## [5,] 2 4 2
## [6,] 2 3 2
## [7,] 3 0 3
## [8,] 3 6 3
Kita lihat bahwa R bisa membuat matriks tersebut. Namun dengan memberikan warning bahwa panjang vector 16 elemen bukan hasil dari perkalian 8 dan 3. Banyaknya baris 8 merupakan faktor dari 16, tapi banyaknya kolom 3 bukan faktor dari 16. Karena 16 dibagi 3 bukan merupakan bilangan bulat. Lantas bagaimana bisa terbentuk matriks yang didefinisikan tersebut? Karena 8x3 = 24, sedangkan banyaknya elemen pada vector x
hanya 16, artinya perlu 8 elemen lagi untuk mengisi matriks tersebut. Jika diperhatikan baik-baik, kolom ketiga adalah pengulangan dari kolom pertama karena semua nilai dari vector x
sudah dimasukan pada kolom pertama dan kedua. Untuk mengisi kolom ketiga, R mengambil kembali nilai-nilai dari elemen pertama vector x
hingga memenuhi ukuran matriks yang diinginkan. Bagiamana dengan matriks ukuran 7x3?
m <- matrix(data = x, nrow = 7, ncol = 3)
## Warning in matrix(data = x, nrow = 7, ncol = 3): data length [16] is not a sub-multiple or multiple
## of the number of rows [7]
m
## [,1] [,2] [,3]
## [1,] 1 3 0
## [2,] 2 5 6
## [3,] 5 3 1
## [4,] 4 1 2
## [5,] 2 0 5
## [6,] 2 4 4
## [7,] 3 3 2
Warning yang serupa kembali muncul namun dengan nilai yang berbeda. Karena 7 bukanlah faktor perkalian dari 16. Mari perhatikan matriks yang dihasilkan di atas yang berukuran 7x3. Karena 7x3 = 21, artinya R kekurangan 5 nilai lagi agar dapat terbentuk matriks ukuran 7x3. Oleh karena itu, R mengambil 5 elemen pertama untuk mengisi kekurangan tersebut. Semua elemen dari vector x
dimasukkan pada kolom pertama dan kedua serta kolom ketiga pada baris pertama dan kedua. Selebihnya pada kolom ketiga baris ketiga, keempat, kelima, keenam, dan ketujuh adalah 5 elemen pertama dari vector x
. Oleh karena itu perlu diperhatikan baik-baik kesesuaian ukuran matriks dan banyaknya elemen yang digunakan.
Selain membentuk matriks dari vector yang sudah ada seperti yang dibahas di atas, Anda juga dapat membuat sebuah matriks dari satu atau beberapa variable pada sebuah dataframe (@ref dataframe). Misalnya variable numerik mpg
dari dataframe mtcars
.
x <- mtcars$mpg # sebuah vector
x
## [1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4 14.7 32.4 30.4
## [20] 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
length(x)
## [1] 32
Karena vector x
memiliki 32 elemen, maka dimensi matriks yang dapat dibuat adalah 2 angka yang hasil perkaliannya menghasilkan nilai 32. Salah satunya adalah 8x4.
m <- matrix(data = x, nrow = 8, ncol = 4)
m
## [,1] [,2] [,3] [,4]
## [1,] 21.0 22.8 14.7 19.2
## [2,] 21.0 19.2 32.4 27.3
## [3,] 22.8 17.8 30.4 26.0
## [4,] 21.4 16.4 33.9 30.4
## [5,] 18.7 17.3 21.5 15.8
## [6,] 18.1 15.2 15.5 19.7
## [7,] 14.3 10.4 15.2 15.0
## [8,] 24.4 10.4 13.3 21.4
Secara default matriks yang dibuat akan menempatkan setiap elemen dengan mengisi kolom terlebih dahulu. Argumen byrow = TRUE
artinya matriks setiap elemen x
akan diisikan ke m
dengan memenuhi baris terlebih dahulu. Jika byrow = FALSE
(default) maka setiap elemen x
diisikan ke m
berdasarkan kolom terlebih dahulu.
matrix(1:10, ncol = 5, nrow = 2, byrow = TRUE)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 2 3 4 5
## [2,] 6 7 8 9 10
matrix(1:10, ncol = 5, nrow = 2, byrow = FALSE)
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
Untuk membuat matriks dengan nilai yang sama seluruhnya, maka dapat dilakukan seperti berikut.
matrix(data = 0, nrow = 5, ncol = 6)
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0 0 0 0 0 0
## [2,] 0 0 0 0 0 0
## [3,] 0 0 0 0 0 0
## [4,] 0 0 0 0 0 0
## [5,] 0 0 0 0 0 0
Untuk mengakses elemen dari suatu matriks, Anda dapat menggunakan indeks dari baris atau kolomnya.
# Mengambil elemen matriks `m` di baris 4
m[4, ]
## [1] 21.4 16.4 33.9 30.4
# Mengambil elemen matriks `m` di kolom 3
m[, 3]
## [1] 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3
# Mengambil elemen matriks `m` di baris 4 dan kolom 3
m[4, 3]
## [1] 33.9
# Mengambil elemen matriks `m` di baris 4 dan 6, dan kolom 3
m[c(4, 6), 3]
## [1] 33.9 15.5
R menyediakan sebuah fungsi yaitu diag()
untuk mengakses nilai-nilai pada diagonal utama sebuah matriks.
diag(m)
## [1] 21.0 19.2 30.4 30.4
Anda juga dapat mengganti nilai dari elemen suatu matriks dengan menggunakan operator assignment.
m[4, 3] <- 0
m[4, 3]
## [1] 0
m # perhatikan elemen di baris 4 kolom 3 sudah berubah jadi 0.0
## [,1] [,2] [,3] [,4]
## [1,] 21.0 22.8 14.7 19.2
## [2,] 21.0 19.2 32.4 27.3
## [3,] 22.8 17.8 30.4 26.0
## [4,] 21.4 16.4 0.0 30.4
## [5,] 18.7 17.3 21.5 15.8
## [6,] 18.1 15.2 15.5 19.7
## [7,] 14.3 10.4 15.2 15.0
## [8,] 24.4 10.4 13.3 21.4
2.8 Array
Array merupakan objek seperti matriks dengan dimensi lebih banyak. Jika matriks hanya mempunyai 2 dimensi, maka array dapat memiliki lebih dari 2 dimensi.
Untuk Array 3 dimensi Anda dapat bayangkan sebagai lapisan beberapa lembar kertas seperti pada gambar di atas. Perhatikan contoh array di bawah ini. Berikut ini merupakan contoh array berdimensi 3 berisi 2 lapis matriks masing-masing berukuran 4 baris dan 4 kolom.
## , , 1
##
## [,1] [,2] [,3] [,4]
## [1,] 21.0 18.7 22.8 17.3
## [2,] 21.0 18.1 19.2 15.2
## [3,] 22.8 14.3 17.8 10.4
## [4,] 21.4 24.4 16.4 10.4
##
## , , 2
##
## [,1] [,2] [,3] [,4]
## [1,] 14.7 21.5 19.2 15.8
## [2,] 32.4 15.5 27.3 19.7
## [3,] 30.4 15.2 26.0 15.0
## [4,] 33.9 13.3 30.4 21.4
Salah satu array yang ada setelah Anda install R adalah array Titanic
.
Titanic
## , , Age = Child, Survived = No
##
## Sex
## Class Male Female
## 1st 0 0
## 2nd 0 0
## 3rd 35 17
## Crew 0 0
##
## , , Age = Adult, Survived = No
##
## Sex
## Class Male Female
## 1st 118 4
## 2nd 154 13
## 3rd 387 89
## Crew 670 3
##
## , , Age = Child, Survived = Yes
##
## Sex
## Class Male Female
## 1st 5 1
## 2nd 11 13
## 3rd 13 14
## Crew 0 0
##
## , , Age = Adult, Survived = Yes
##
## Sex
## Class Male Female
## 1st 57 140
## 2nd 14 80
## 3rd 75 76
## Crew 192 20
Untuk mengetahui ukuran dimensi dari sebuah array Titanic
dapat menggunakan fungsi dim()
.
dim(Titanic)
## [1] 4 2 2 2
Artinya array Titanic
adalah array 4 dimensi.
2.9 Dataframe
Dataframe layaknya sebuah tabel di Ms Excel, terdiri dari baris dan kolom dengan nama masing-masing kolom berbeda. Apa bedanya dengan matriks? Matriks hanya bisa menyimpan tipe data yang sama, numeric atau character seluruhnya. Pada dataframe, masing-masing kolom boleh memiliki tipe data yang berbeda. Dataframe seperti umumnya bentuk tabel yang sering kita gunakan.
Contoh dataframe yang ada di dalam R salah satunya adalah mtcars
.
mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |
---|---|---|---|---|---|---|---|---|---|---|---|
Mazda RX4 | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
Mazda RX4 Wag | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
Datsun 710 | 22.8 | 4 | 108.0 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |
Hornet 4 Drive | 21.4 | 6 | 258.0 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
Hornet Sportabout | 18.7 | 8 | 360.0 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |
Valiant | 18.1 | 6 | 225.0 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 |
Duster 360 | 14.3 | 8 | 360.0 | 245 | 3.21 | 3.570 | 15.84 | 0 | 0 | 3 | 4 |
Merc 240D | 24.4 | 4 | 146.7 | 62 | 3.69 | 3.190 | 20.00 | 1 | 0 | 4 | 2 |
Merc 230 | 22.8 | 4 | 140.8 | 95 | 3.92 | 3.150 | 22.90 | 1 | 0 | 4 | 2 |
Merc 280 | 19.2 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.30 | 1 | 0 | 4 | 4 |
Merc 280C | 17.8 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.90 | 1 | 0 | 4 | 4 |
Merc 450SE | 16.4 | 8 | 275.8 | 180 | 3.07 | 4.070 | 17.40 | 0 | 0 | 3 | 3 |
Merc 450SL | 17.3 | 8 | 275.8 | 180 | 3.07 | 3.730 | 17.60 | 0 | 0 | 3 | 3 |
Merc 450SLC | 15.2 | 8 | 275.8 | 180 | 3.07 | 3.780 | 18.00 | 0 | 0 | 3 | 3 |
Cadillac Fleetwood | 10.4 | 8 | 472.0 | 205 | 2.93 | 5.250 | 17.98 | 0 | 0 | 3 | 4 |
Lincoln Continental | 10.4 | 8 | 460.0 | 215 | 3.00 | 5.424 | 17.82 | 0 | 0 | 3 | 4 |
Chrysler Imperial | 14.7 | 8 | 440.0 | 230 | 3.23 | 5.345 | 17.42 | 0 | 0 | 3 | 4 |
Fiat 128 | 32.4 | 4 | 78.7 | 66 | 4.08 | 2.200 | 19.47 | 1 | 1 | 4 | 1 |
Honda Civic | 30.4 | 4 | 75.7 | 52 | 4.93 | 1.615 | 18.52 | 1 | 1 | 4 | 2 |
Toyota Corolla | 33.9 | 4 | 71.1 | 65 | 4.22 | 1.835 | 19.90 | 1 | 1 | 4 | 1 |
Toyota Corona | 21.5 | 4 | 120.1 | 97 | 3.70 | 2.465 | 20.01 | 1 | 0 | 3 | 1 |
Dodge Challenger | 15.5 | 8 | 318.0 | 150 | 2.76 | 3.520 | 16.87 | 0 | 0 | 3 | 2 |
AMC Javelin | 15.2 | 8 | 304.0 | 150 | 3.15 | 3.435 | 17.30 | 0 | 0 | 3 | 2 |
Camaro Z28 | 13.3 | 8 | 350.0 | 245 | 3.73 | 3.840 | 15.41 | 0 | 0 | 3 | 4 |
Pontiac Firebird | 19.2 | 8 | 400.0 | 175 | 3.08 | 3.845 | 17.05 | 0 | 0 | 3 | 2 |
Fiat X1-9 | 27.3 | 4 | 79.0 | 66 | 4.08 | 1.935 | 18.90 | 1 | 1 | 4 | 1 |
Porsche 914-2 | 26.0 | 4 | 120.3 | 91 | 4.43 | 2.140 | 16.70 | 0 | 1 | 5 | 2 |
Lotus Europa | 30.4 | 4 | 95.1 | 113 | 3.77 | 1.513 | 16.90 | 1 | 1 | 5 | 2 |
Ford Pantera L | 15.8 | 8 | 351.0 | 264 | 4.22 | 3.170 | 14.50 | 0 | 1 | 5 | 4 |
Ferrari Dino | 19.7 | 6 | 145.0 | 175 | 3.62 | 2.770 | 15.50 | 0 | 1 | 5 | 6 |
Maserati Bora | 15.0 | 8 | 301.0 | 335 | 3.54 | 3.570 | 14.60 | 0 | 1 | 5 | 8 |
Volvo 142E | 21.4 | 4 | 121.0 | 109 | 4.11 | 2.780 | 18.60 | 1 | 1 | 4 | 2 |
Umumnya ketika Anda melakukan analisis data, maka data yang Anda gunakan adalah berupa tabel. Di dalam R sebuah tabel yang terdiri dari baris dan kolom disebut dataframe atau data.frame
. Baris di dataframe disebut observation
dan kolom disebut variable
(Gambar 2.2).
Untuk membuat sebuah dataframe Anda dapat menggunakan fungsi data.frame()
. Misalnya Anda akan membuat sebuah dataframe bernama data1
yang berisi 5 observation dan 2 variable. Variable pertama bernama x1
berisi sebuah vector numeric dengan nilai {1, 3, 2, 6, 4} dan variable kedua bernama v2
berisi vector character dengan nilai {“a”, “A”, “c”, “d”, “E”}. Anda dapat membuat vector x1
dan v1
terlebih dahulu menggunakan fungsi c()
(atau fungsi lain yang sesuai untuk membuat vector). Kemudian membuat dataframe dari vector tersebut. Perhatikan contoh berikut ini.
x1 <- c(1, 3, 2, 6, 4)
v1 <- c("a", "A", "c", "d", "E")
data1 <- data.frame(x1 = x1, v1 = v1)
Anda dapat melihat dataframe yang sudah dibuat tersebut dengan memanggil nama objek dataframe.
data1
## x1 v1
## 1 1 a
## 2 3 A
## 3 2 c
## 4 6 d
## 5 4 E
Perhatian! Ketika Anda membuat sebuah dataframe yang berisi sebuah variable character pada R dengan versi 3.6.3 atau sebelumnya, maka secara otomatis variable dari vector character tersebut akan diubah menjadi variable factor (2.6). Hal ini terjadi karena fungsi data.frame()
mempunyai sebuah argumen stringsAsFactors = TRUE
. Pada R versi 4.0.0 atau lebih baru, variable dari vector character akan tetap dijadikan sebuah variable character karena argumen stringsAsFactors = FALSE
. Tentu saja Anda dapat merubahnya dengan menambahkan argumen tersebut ketika Anda membuat dataframe.
data1 <- data.frame(x1 = x1, v1 = v1, stringsAsFactors = TRUE) # atau TRUE
data1
## x1 v1
## 1 1 a
## 2 3 A
## 3 2 c
## 4 6 d
## 5 4 E
Untuk mengetahui ukuran dimensi sebuah dataframe Anda dapat gunakan fungsi dim()
seperti yang sudah dicontohkan pada pembahasan array (2.8).
dim(data1)
## [1] 5 2
Hasil dari fungsi dim()
untuk dataframe atau matrix adalah sebuah vector dengan elemen pertama adalah banyaknya observation, sedangkan elemen kedua adalah banyaknya variable. Pada contoh di atas berarti dataframe data1
memiliki 5 observation dan 2 variable.
Untuk mengetahui struktur dari sebuah dataframe Anda dapat gunakan fungsi str()
(str-ucture). Dengan fungsi ini Anda dapat memperoleh informasi lebih lengkap dari sebuah dataframe seperti banyaknya observation dan variable, nama-nama variable, tipe variable, dan beberapa nilai baris pertama untuk masing-masing variable.
str(data1)
## 'data.frame': 5 obs. of 2 variables:
## $ x1: num 1 3 2 6 4
## $ v1: Factor w/ 5 levels "a","A","c","d",..: 1 2 3 4 5
Dari hasil di atas Anda dapat ketahui bahwa objek data1
adalah sebuah dataframe berukuran 5 observation (obs.) dan 2 variable. Nama variable yang ada adalah x1
dan v1
. Variable x1
adalah variable bertipe numeric, sedangkan v1
adalah variable character alias factor. Nilai pada baris pertama dataframe data1
untuk variable x1
adalah 1 dan variable v1
adalah “a”. Nilai “a” dikodekan sebagai 1, “A” dikodekan sebagai 2, “c” dikodekan sebagai 3, dan seterusnya.
Selanjutnya untuk mengambil nilai sebuah variable dari sebuah dataframe dapat menggunakan tanda dollar ($
) atau menggunakan indeks. Harus diakui bahwa dalam bahasa pemrograman R, banyak cara yang dapat digunakan untuk melakukan satu pekerjaan yang sama. Perhatikan contoh berikut.
# Menggunakan tanda dollar
data1$x1
## [1] 1 3 2 6 4
# Menggunakan indeks urutan posisi variable
data1[, 1]
## [1] 1 3 2 6 4
# Menggunakan double-bracket posisi variable
data1[[1]]
## [1] 1 3 2 6 4
# Menggunakan nama variable pada indeks
data1[, "x1"]
## [1] 1 3 2 6 4
Untuk membuat variable baru Anda dapat menggunakan cara yang hampir sama dan menggunakan assignment. Berikut ini kita akan membuat variable baru bernama x2
berupa variable numeric.
data1$x2 <- 1:5
data1
## x1 v1 x2
## 1 1 a 1
## 2 3 A 2
## 3 2 c 3
## 4 6 d 4
## 5 4 E 5
str(data1)
## 'data.frame': 5 obs. of 3 variables:
## $ x1: num 1 3 2 6 4
## $ v1: Factor w/ 5 levels "a","A","c","d",..: 1 2 3 4 5
## $ x2: int 1 2 3 4 5
Tipe num
artinya variable tersebut adalah double dan tipe int
adalah tipe integer.
Kemudian kita buat variable baru bernama x3
yang merupakan penjumlahan dari variable x1
dan x2
.
data1$x3 <- data1$x1 + data1$x2
str(data1)
## 'data.frame': 5 obs. of 4 variables:
## $ x1: num 1 3 2 6 4
## $ v1: Factor w/ 5 levels "a","A","c","d",..: 1 2 3 4 5
## $ x2: int 1 2 3 4 5
## $ x3: num 2 5 5 10 9
2.10 List
Objek list
pada dasarnya mirip seperti vector, hanya saja tipe elemennya bisa berbeda. Jika pada vector numeric semua elemennya harus berupa numerik. Pada vector character semuanya harus karakter. Pada objek list
elemennya dapat berupa vector, factor, matriks, array, dataframe, bahkan list di dalam list atau objek lain seperti model prediktif yang dibuat di R.
Contoh membuat list dengan fungsi list()
.
## [[1]]
## [1] 2
##
## [[2]]
## [1] "A"
##
## [[3]]
## [1] 4 5 2
##
## [[4]]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
2.11 Function dan Packages
//TODO: Membahas cara menggunakan fungsi yang sudah ada di R, membuat fungsi sendiri dan cara menggunakan package.
Pada dasarnya R adalah bahasa pemrograman functional atau Functional Programming (FP). Wickham (2015) menyatakan bahwa R menyediakan banyak alat untuk pembuatan dan manipulasi fungsi. Secara khusus R memiliki apa yang dikenal sebagai irst class function. Anda dapat melakukan apa saja dengan fungsi seperti yang dapat Anda lakukan dengan vector: Anda dapat memasukkan mereka ke dalam sebuah objek, menyimpannya dalam list
, menjadikannya sebagai argumen pada fungsi yang lain, membuat fungsi di dalam fungsi, dan bahkan menjadikannya sebagai hasil keluaran dari suatu fungsi.
2.11.1 Menggunakan fungsi yang sudah ada
Karena dibuat untuk memudahkan analisis data, R mempunyai banyak fungsi yang tersedia untuk melakukan analisis statistik. Untuk mendapatkan nilai rata-rata dari sebuah vector numeric Anda dapat langsung gunakan fungsi mean()
. Untuk mendapatkan milai minimum atau maksimum tersedia fungsi min()
dan max()
. Fungsi sd()
dapat digunakan untuk mendapatkan nilai standard deviasi atau fungsi var()
untuk mendapatkan nilai ragam (varians). Perhatikan contoh berikut ini.
## [1] 49
# Minimum dari vector x
min(x)
## [1] 1
# Maksimum dari vector x
max(x)
## [1] 97
Jika Anda ingin mencari nilai minimum dan maksimum sekaligus, Anda dapat gunakan fungsi range()
. Output dari fungsi ini adalah vector numeric dengan dua elemen berisi nilai minimum dan maksimum.
range(x)
## [1] 1 97
Jika Anda ingin mencari nilai statistik lima serangkai (minimum, Q1, Q2 atau median, Q3, maksimum), Anda dapat gunakan fungsi summary()
.
summary(x)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1 25 49 49 73 97
Jika fungsi atau data yang akan Anda gunakan berasal dari sebuah package, maka Anda dapat gunakan fungsi library()
, require()
atau klik beri tanda checklist pada tab Packages seperti pada Gambar 2.4 untuk mengaktifkan package tersebut pada session yang sedang Anda gunakan. Tentunya package tersebut harus sudah Anda install sebelumnya. Misalnya Anda ingin menggunakan data flights
dari package nycflights13
. Hal pertama Anda harus pastikan package tersebut sudah terinstall dengan baik di R Anda. Jika Anda belum install package tersebut Anda dapat menginstallnya dengan perintah berikut.
install.packages("nycflights13")
Kaetika Anda akan install sebuah package, nama package tersebut harus berupa string. Anda hanya perlu melakukan satu kali install saja, tidak perlu install ketika setiap kali akan Anda gunakan. Sekarang Anda coba untuk memanggil data flights
dari package nycflights13
tanpa mengaktifkan package terlebih dahulu. Maka akan muncul sebuah error yang menyatakan bahwa objek flights
tidak ditemukan.
flights
## Error: object 'flights' not found
Karena data flights
ada di dalam package nycflights13
maka Anda perlu aktifkan terlebih dahulu package tersebut. Anda dapat mengaktifkannya dengan perintah berikut ini.
Kemudian panggil data flights
. Kita gunakan fungsi head()
untuk menampilkan beberapa baris pertama saja dari data. Secara default fungsi head()
akan menampilkan 6 baris pertama saja dari data yang kita sebutkan pada argumen pertamanya.
head(flights)
## # A tibble: 6 × 19
## year month day dep_time sched_d…¹ dep_d…² arr_t…³ sched…⁴ arr_d…⁵ carrier flight tailnum origin
## <int> <int> <int> <int> <int> <dbl> <int> <int> <dbl> <chr> <int> <chr> <chr>
## 1 2013 1 1 517 515 2 830 819 11 UA 1545 N14228 EWR
## 2 2013 1 1 533 529 4 850 830 20 UA 1714 N24211 LGA
## 3 2013 1 1 542 540 2 923 850 33 AA 1141 N619AA JFK
## 4 2013 1 1 544 545 -1 1004 1022 -18 B6 725 N804JB JFK
## 5 2013 1 1 554 600 -6 812 837 -25 DL 461 N668DN LGA
## 6 2013 1 1 554 558 -4 740 728 12 UA 1696 N39463 EWR
## # … with 6 more variables: dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>,
## # time_hour <dttm>, and abbreviated variable names ¹sched_dep_time, ²dep_delay, ³arr_time,
## # ⁴sched_arr_time, ⁵arr_delay
Karena package nycflights13
sudah Anda aktifkan sebelumnya maka ketika data flights
dipanggil tidak akan muncul error.
2.11.2 Membuat fungsi sendiri
Ketika Anda membuat sebuah script yang akan digunakan berkali-kali namun dengan nilai input yang berbeda-beda, maka ada baiknya script tersebut dibuat menjadi sebuah fungsi atau function sesuai dengan kebutuhan Anda atau User-Defined Function. Untuk membuat function di R Anda dapat menggunakan fungsi function()
. Misalnya Anda mempunyai script seperti berikut.
a <- 5
b <- 7
d <- a + b
d
## [1] 12
Kemudian ketika Anda ingin menggunakan nilai lain untuk a
namun dengan nilai b
yang sama, misalnya a <- 2
, Anda perlu menjalankan perintah seperti berikut.
a <- 2
d <- a + b
d
## [1] 9
Jika script di atas dibuat sebuah fungsi, misalnya dengan nama fungsi sum_ab
, maka Anda dapat membuatnya seperti berikut ini. Fungsi tersebut memiliki 2 buah parameter atau argumen, yaitu a
dan b
berupa nilai numerik. Argumen a
dan b
harus diisi ketika memanggil fungsi tersebut. Fungsi return()
di dalam fungsi sum_ab()
menentukan nilai yang akan dijadikan keluaran (output) dari fungsi sum_ab()
.
sum_ab <- function(a, b){
d <- a + b
return(d)
}
Selanjutnya panggil fungsi tersebut dengan argumen yang diperlukan.
sum_ab(a = 5, b = 7)
## [1] 12
Merubah nilai a <- 2
dapat dilakukan dengan lebih mudah.
sum_ab(a = 2, b = 7)
## [1] 9
Bagaimana jika tidak ada argumen yang diberikan ketika memanggil fungsi tersebut? Dalam hal ini akan terjadi error. Error yang terjadi karena argumen pada fungsi ini adalah tipe argumen yang harus diisi atau tidak mempunyai nilai default.
sum_ab()
## Error in sum_ab() : argument "a" is missing, with no default
Apa itu nilai default argumen pada sebuah fungsi? Kita akan sedikit memodifikasi fungsi sum_ab()
yang sudah dibuat sebelumnya.
sum_ab <- function(a = 1, b = 1){
d <- a + b
return(d)
}
Fungsi sum_ab()
sekarang memiliki nilai default untuk setiap argumennya. Argumen a
memiliki nilai 1
dan b
juga 1
. Ketika Anda panggil fungsi sum_ab()
tanpa menuliskan nilai untuk argumennya maka secara default nilai-nilai tersebut yang akan digunakan.
sum_ab()
## [1] 2
sum_ab(a = 5, b = 3)
## [1] 8
2.11.3 Install Package
Package adalah sebuah kumpulan fungsi atau data yang dibuat untuk memudahkan proses di R tanpa harus menuliskan ulang script yang dibutuhkan. Saat ini package menjadi bagian yang sangat penting bagi Data Analyst atau Data Scientist ketika menggunakan R. Karena dengan package tambahan (yang belum ada ketika install R) pekerjaan dalam mengolah data menjadi lebih efisien.
Untuk dapat menggunakan fungsi atau data dari sebuah package tambahan Anda perlu install terlebih dahulu. Salah satu contohnya sudah disampaikan pada bagian 2.11.1, yaitu package {nycflights13}. Selanjutnya Anda dapat install juga package {ggplot2}. Package ini sangat berguna untuk membuat visualisasi data di R. Untuk melihat help dari package ini Anda dapat melakukannya dengan cara yang akan di bahas di bagian 2.12.
Install package di R sangat mudah dengan fungsi install.packages("namapackage")
atau melalui menu Install di tab Packages di RStudio. Yang perlu Anda perhatikan ketika akan install package adalah koneksi internet, nama package dan repository-nya. Koneksi internet yang baik sangat dibutuhkan ketika install package untuk R mendownload file package tersebut. Selanjutnya nama package juga harus sesuai dari penulisannya, termasuk huruf kapitalnya. Misalnya Anda ingin install package {ggplot2}, maka Anda harus menuliskannya dengan install.packages("ggplot2")
. Jika penulisannya tidak sama maka package tersebut tidak akan diinstall. Perhatikan contoh berikut ini.
install.packages("ggplot")
## Installing package into �C:/Users/Lenovo/Documents/R/win-library/4.0�
## (as �lib� is unspecified)
## Warning in install.packages :
## package ‘ggplot’ is not available (for R version 4.0.1)
Contoh di atas adalah pemberitahuan ketika package yang ingin Anda install tidak tersedia. Ketika nama package yang Anda tuliskan ada di repository maka akan ada pop-up download file package. Sekarang coba perhatikan contoh berikut ini.
install.packages("ggplot2")
## Installing package into �C:/Users/Lenovo/Documents/R/win-library/4.0�
## (as �lib� is unspecified)
## trying URL 'http://cran.rstudio.com/bin/windows/contrib/4.0/ggplot2_3.3.2.zip'
## Content type 'application/zip' length 4067278 bytes (3.9 MB)
## downloaded 3.9 MB
##
## package ‘ggplot2’ successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\Lenovo\AppData\Local\Temp\RtmpUd5mDA\downloaded_packages
Hal yang perlu Anda perhatikan selanjutnya adalah repository package. Ada beberapa repository yang digunakan sebagai tempat penyimpanan package. Reposiroty yang paling umum adalah Comprehensive R Archieve Network (CRAN). Ketika Anda menggunakan fungsi install.packages()
maka secara otomatis package yang akan diinstall berasal dari CRAN. Selain itu ada beberapa repository lain seperti GitHub, Bitbucket, Bioconductor dan lain-lain. Pada kesempatan ini hanya akan membahas repository GitHub saja.
Umumnya GitHub digunakan sebagai tempat untuk repository package yang belum ada di CRAN atau versi pengembangan (development) yang belum submit ke CRAN. Untuk dapat install package dari GitHub Anda dapat gunakan package {devtools} atau {remotes}. Saya sarankan untuk menggunakan package {devtools} karena dapat Anda gunakan juga untuk membuat package jika dibutuhkan. Anda juga mungkin perlu install RTools versi yang sesuai dengan versi R Anda jika menggunakan OS Windows.
Misalnya Anda ingin install package {DataExplorer} dari Github. Yang perlu Anda ketahui adalah link/username dari repository package tersebut. Repository GitHub package {DataExplorer} adalah https://github.com/boxuancui/DataExplorer. Argumen yang dibutuhkan adalah username dan nama repository. Username dari package ini adalah boxuancui
dan repository-nya adalah DataExplorer
. Anda dapat gunakan perintah berikut ini.
install.packages("devtools")
devtools::install_github("boxuancui/DataExplorer")
2.12 Mencari Help Sebuah Fungsi
//TODO: Membahas cara mencari help dari sebuah fungsi dan package.
Ketika Anda akan menggunakan sebuah fungsi di R ada baiknya untuk Anda mengetahui beberapa hal tentang fungsi tersebut. Yang harus Anda ketahui dari sebuah fungsi paling tidak adalah untuk apa fungsi tersebut digunakan, apa saja argumen yang diperlukan, bagaimana penggunaannya dan output seperti apa yang dihasilkan.
Misalnya Anda ingin gunakan fungsi mean()
, maka Anda dapat mengetikkan ?mean
atau help("mean")
. Jika Anda menggunakan RStudio maka akan muncul halaman help dari fungsi mean()
di tab Help.
Umumnya pada sebuah halaman help akan ada informasi fungsi tersebut berasal dari package apa, pada Gambar 2.5 diketahui fungsi mean()
berasal dari package {base}. Kemudian deskripsi singkat tentang fungsi (Description), penggunaan (Usage), penjelasan setiap argumen pada fungsi tersebut (Arguments), penjelasan lebih detail (Value/Detail, jika ada) dan contoh penggunaan fungsi (Examples, jika ada).
Hal ini jg berlaku jika Anda ingin melihat halaman help dari sebuah data yang ada di R, baik itu dari package {base} ataupun package tambahan yang lain. Misalnya halaman help dari data iris
. Ketikkan ?iris
pada console RStudio untuk menampilkan halaman help data iris
. Dari Gambar 2.6 diketahui bahwa data iris
berasal dari package {datasets}.
Jika Anda ingin mencari help sebuah fungsi yang berasal dari package tertentu yang sudah Anda install sebelumnya tetapi belum Anda aktifkan package tersebut, maka Anda dapat gunakan format namespace (namapackage::namafungsi). Sebagai ilustrasi Anda dapat mencari help dari fungsi read_excel()
dari package {readxl} (https://readxl.tidyverse.org/). Untuk mencari hellp fungsi tersebut Anda dapat ketikkan ?readxl::read_excel
di console dan akan muncul halaman help seperti pada Gambar 2.7.
Cara lain untuk mencari help di R adalah dengan menggunakan fungsi help()
. Misalnya untuk help dari fungsi mean()
Anda ketikkan di console help('mean")
, help("iris")
untuk data iris
. Untuk melihat help sebuah fungsi dari package yang belum Anda aktifkan, Anda juga harus menyebutkan nama packagenya seperti help("read_excel", package = "readxl")
. Apa yang terjadi jika Anda tidak menyebutkan nama packagenya?
help("read_excel")
Tetapi jika Anda sudah mengaktikan package tersebut, baik menggunakan fungsi library()
, require()
ataupun dengan klik pada tab Packages, Anda tidak perlu menyebutkan nama package tersebut. Cukup mengetikkan help("read_excel")
.
Untuk melihat help dari suatu package, misalnya package {readxl}, Anda dapat gunakan help(package = "readxl")
.