ALGORITME & PEMROGRAMAN Abdul Kudus, SSi., MSi., PhD. Senin, 6.30 – 9.00 Rabu, – 14.00
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) > attributes(z) $dim [1] 4 2 > attributes(r) NULL > str(z) int [1:4, 1:2] > str(r) int [1:2] 2 6 bukti bhw r adalah vektor Hal ini harus diperhatikan dlm pemrograman
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] > 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 a b [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 dan 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,] [2,] [3,] > secondtest [,1] [,2] [1,] [2,] [3,] > tests <- array(data=c(firsttest,secondtest),dim=c(3,2,2)) > attributes(tests) $dim [1] > tests[3,2,1] [1] 48 > tests,, 1 [,1] [,2] [1,] [2,] [3,] 50 48,, 2 [,1] [,2] [1,] [2,] [3,] 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.
Struktur Data LIST Berbeda dengan vektor (dan matriks) dimana semua unsurnya harus mempunyai jenis yang sama (angka saja atau abyad saja), list dapat menggabungkan obyek-obyek yang berbeda jenis. Membuat list Misalkan database pegawai Unisba, dimana tiap pegawai mempunyai data: -Nama -Gaji -Status (TRUE = Dosen, FALSE = Karyawan) Maka bagi seorang pegawai yang bernama Abu kita bisa buat datanya yang mempunyai struktur list > data.pegawai <- list(name="Abu", gaji=300000, status=FALSE) Disebut tag. Sifatnya opsional
> data.pegawai $name [1] "Abu" $gaji [1] 3e+05 $status [1] FALSE Alternatifnya kita bisa buat seperti ini > data.pegawai2 [[1]] [1] "Abu" [[2]] [1] 3e+05 [[3]] [1] FALSE > data.pegawai2 <- list("Abu",300000,FALSE)
Meng-indeks (subskrip) list > data.pegawai$gaji [1] 3e+05 > data.pegawai[["gaji"]] [1] 3e+05 > data.pegawai[[2]] [1] 3e+05 Jadi ada 3 cara utk mengakses komponen d dari sebuah list yang bernama daftar, yaitu? Perbedaan mengakses dgn kurung dobel dan kurung tunggal?
Menambah dan menghapus unsur list > z <- list(a="abc",b=12) > z $a [1] "abc" $b [1] 12 > z$c <- "berlayar" # tambah komponen c > # apakah c sudah ditambahkan? > z $a [1] "abc" $b [1] 12 $c [1] "berlayar"
Kita bisa menghapus komponen dari list dengan membuatnya menjadi NULL > z$b <- NULL > z $a [1] "abc" $c [1] "berlayar"
carikata <- function(file) { # baca kata-kata dr file ke dlm vektor abyad txt <- scan(file,"") dk <- list() for (i in 1:length(txt)) { kata <- txt[i] # kata ke-i dr file input dk[[kata]] <- c(dk[[kata]],i) } return(dk) } > carikata("c:/batuta.txt") Contoh: Cari kata dari teks