ALGORITME PEMROGRAMAN Abdul Kudus SSi MSi Ph D
ALGORITME & PEMROGRAMAN Abdul Kudus, SSi. , MSi. , Ph. D. Senin, 6. 30 – 9. 00 Rabu, 12. 00 – 14. 00
Mengenakan Fungsi kepada Baris-baris atau Kolom-kolom Matriks Salah satu perintah R yang populer adalah kelompok perintah *apply(), seperti apply(), tapply() dan lapply() digunakan utk mengenakan fungsi kepada setiap baris atau setiap kolom dari matriks. Penggunaan apply() Bentuk umum: apply(m, dimcode, f, fargs) dimana: m = matriks dimcode = dimensi, yakni 1 jika dikenakan kpd baris atau 2 jika dikenakan kpd kolom f = fungsi yg dikenakan fargs = argumen tambahan bagi fungsi f (opsional)
Contoh: kita akan mengenakan fungsi mean() kpd setiap kolom matriks z > z [, 1] [, 2] [1, ] 1 4 [2, ] 2 5 [3, ] 3 6 > apply(z, 2, mean) [1] 2 5 Catatan: fungsi col. Means() bisa juga dipakai
Contoh: kita buat perintah (fungsi) baru, kemudian dikenakan kpd setiap kolom matriks z >z [, 1] [, 2] [1, ] 1 4 [2, ] 2 5 [3, ] 3 6 > f <- function(x) x/c(2, 8) > y <- apply(z, 1, f) >y [, 1] [, 2] [, 3] [1, ] 0. 5 1. 000 1. 50 [2, ] 0. 5 0. 625 0. 75
Menambah atau Menghapus Baris dan Kolom Matriks Mengubah dimensi vektor atau matriks >x [1] 12 5 13 16 8 > x <- c(x, 20) # tambahkan unsur 20 >x [1] 12 5 13 16 8 20 > x <- c(x[1: 3], 20, x[4: 6]) # sisipkan 20 >x [1] 12 5 13 20 16 8 20 > x <- x[-2: -4] # hapus unsur ke-2 sampai ke-4 >x [1] 12 16 8 20
Untuk mengubah dimensi dari matriks bisa digunakan rbind() dan cbind(). rbind = row bind tambahkan baris cbind = column bind tambahkan kolom > satu [1] 1 1 >z [, 1] [, 2] [, 3] [1, ] 1 1 1 [2, ] 2 1 0 [3, ] 3 0 1 [4, ] 4 0 0 buat matriks baru dengan > z <- cbind(satu, z) menggabungkan kolom berisi angka 1 >z dengan kolom-kolom matriks z [1, ]1 1 Cara seperti ini tidak dianjurkan utk [2, ]1 2 1 0 dipakai dalam perulangan (loop), krn [3, ]1 3 0 1 program akan menjadi lambat. [4, ]1 4 0 0
Menghapus baris atau kolom dgn penugasan kembali (reassignment) > m <- matrix(1: 6, nrow=3) >m [, 1] [, 2] [1, ] 1 4 [2, ] 2 5 [3, ] 3 6 > m <- m[c(1, 3), ] >m [, 1] [, 2] [1, ] 1 4 [2, ] 3 6
Perbedaan Vektor dan Matriks (lebih lanjut) Matriks adalah juga vektor, tetapi mempunyai dua tambahan atribut, yakni banyaknya baris dan banyaknya kolom. > z <- matrix(1: 8, nrow=4) >z [, 1] [, 2] [1, ] 1 5 [2, ] 2 6 [3, ] 3 7 [4, ] 4 8 Karena z juga merupakan vektor, maka kita bisa meminta info tentang length-nya: > length(z) [1] 8
Akan tetapi sebagai matrix, z punya kelebihan dibanding vektor > class(z) [1] "matrix" > attributes(z) $dim [1] 4 2 info ttg banyak baris dan kolom atau langsung menggunakan fungsi (perintah) dim > dim(z) [1] 4 2 atau info ttg banyak baris dan kolom bisa secara sendiri-sendiri diperoleh dgn perintah nrow dan ncol > nrow(z) [1] 4 > ncol(z) [1] 2
Menghindari Reduksi Dimensi yg Tidak Diinginkan >z [, 1] [, 2] [1, ] 1 5 [2, ] 2 6 [3, ] 3 7 [4, ] 4 8 > r <- z[2, ] >r [1] 2 6 z adalah matriks r adalah vektor (terjadi reduksi dimensi) bukti bhw r adalah vektor Hal ini harus diperhatikan dlm pemrograman > attributes(z) $dim [1] 4 2 > attributes(r) NULL > str(z) int [1: 4, 1: 2] 1 2 3 4 5 6 7 8 > str(r) int [1: 2] 2 6
Agar tidak terjadi reduksi dimensi, gunakan argumen ‘drop’ > r <- z[2, , drop=FALSE] >r [, 1] [, 2] [1, ] 2 6 > dim(r) [1] 1 2 r tetap mrp matriks Vektor bisa dijadikan matriks dengan perintah as. matrix >u [1] 1 2 3 > v <- as. matrix(u) > attributes(u) NULL > attributes(v) $dim [1] 3 1
Memberi Nama kepada Baris dan Kolom Matriks >z [, 1] [, 2] [1, ] 1 3 [2, ] 2 4 > colnames(z) NULL > colnames(z) <- c("a", "b") >z ab [1, ] 1 3 [2, ] 2 4 > colnames(z) [1] "a" "b" > z[, "a"] [1] 1 2 memberi nama kolom merujuk suatu kolom
Array Berdimensi Tinggi Dalam kontek statistika, baris-baris dari matriks adalah pengamatan, misal orang, dan kolom-kolom adalah variabel, seperti berat badan tekanan darah. Maka matriks berupa struktur data berdimensi dua. Misalkan kita mengukur variabel-variabel tsb pada waktu yg berbeda, sehingga setiap angka data kita adalah utk tiap orang tiap variabel tiap waktu. Oleh karena itu waktu menjadi dimensi ketiga. Data tsb dalam R disebut array.
> firsttest [, 1] [, 2] [1, ] 46 30 [2, ] 21 25 [3, ] 50 50 > secondtest [, 1] [, 2] [1, ] 46 43 [2, ] 41 35 [3, ] 50 50 > tests[3, 2, 1] [1] 48 > tests , , 1 [, 1] [, 2] [1, ] 46 30 [2, ] 21 25 [3, ] 50 48 , , 2 [, 1] [, 2] [1, ] 46 43 [2, ] 41 35 [3, ] 50 49 Seperti halnya kita membuat array berdimensi 3 dgn menggabungkan dua matriks, maka kita juga bisa buat array berdimensi 4 dgn menggabungkan dua atau lebih array berdimensi 3. > tests <- array(data=c(firsttest, secondtest), dim=c(3, 2, 2)) > attributes(tests) $dim [1] 3 2 2
- Slides: 14