Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
ALGORITME & PEMROGRAMAN
Abdul Kudus, SSi., MSi., PhD. Senin, 6.30 – 9.00 Rabu, – 12.00 Rabu, – 14.00
2
Perintah all() dan any()
Perintah any(): apakah ada unsur yang TRUE dari isi vektor tsb. Perintah all(): apakah semua unsur dari vektor tsb adalah TRUE. Misalnya ketika memproses perintah > any(x > 8) > x <- 1:5 > any(x > 3) [1] TRUE > any(x > 33) [1] FALSE > all(x > 33) > all(x > 0) Maka pertama-tama R memproses x > 8, yang hasilnya (FALSE,FALSE,FALSE,TRUE,TRUE) Kemudian dikenakan perintah any, yang memeriksa apakah ada unsur yang TRUE. Begitu juga ketika dikenakan perintah all.
3
Contoh: Mencari subskrip dimana muncul dua angka 1 berturutan
Dari vektor yang hanya berisi angka 0 atau 1, kita ingin mencari subskrip awal dimana muncul dua buah angka 1 secara berturutan. Misal: vektor 1 2 3 4 5 6 7 8 9 subskrip Mulai pada subskrip: 1 apakah unsur ke-1 dan ke-2 = (1,1), Tidak 2 apakah unsur ke-2 dan ke-3 = (1,1), Tidak 3 apakah unsur ke-3 dan ke-4 = (1,1), Tidak 4 apakah unsur ke-4 dan ke-5 = (1,1), Ya 5 apakah unsur ke-5 dan ke-6 = (1,1), Ya 6 apakah unsur ke-6 dan ke-7 = (1,1), Tidak 7 apakah unsur ke-7 dan ke-8 = (1,1), Tidak 8 apakah unsur ke-8 dan ke-9 = (1,1), Ya Pemeriksaan cukup sampai subskrip ke-8 Jadi hasilnya adalah (4,5,8)
4
cari2angka1 <- function(x) {
n <- length(x) hasil <- NULL for (i in 1:(n-1)) { if (all(x[i:(i+1)]==1)) hasil <- c(hasil,i) } return(hasil) > x <- c(1,0,0,1,1,1,0,1,1) > cari2angka1(x) [1] 4 5 8 Bagaimana jika mencari tiga buah angka 1 berturutan? Bagaimana jika mencari k buah angka 1 berturutan?
5
Nilai NA dan NULL NA untuk data hilang (ada tapi tidak diketahui) NULL untuk data yang tidak ada Penggunaan NA Dalam banyak rumus statistika, kita harus mengabaikan data hilang. > x <- c(88,NA,12,168,13) > x [1] 88 NA > mean(x) [1] NA > mean(x,na.rm=TRUE) [1] 70.25 > x <- c(88,NULL,12,168,13)
6
Penggunaan NULL Salah satu penggunaan NULL adalah utk membuat vektor dalam loop (perulangan). # membuat vektor bilangan genap dalam jangkauan 1:10 > z <- NULL > for (i in 1:10) if (i %%2 == 0) z <- c(z,i) > z [1] Jika kita ganti dengan NA, maka akan salah > z <- NA > for (i in 1:10) if (i %%2 == 0) z <- c(z,i) > z [1] NA
7
Nilai NULL dianggap tidak ada
> u <- NULL > length(u) [1] 0 > v <- NA > length(v) [1] 1
8
Menyaring (Filtering)
Kita bisa mengambil unsur-unsur dari vektor yang memenuhi syarat tertentu. Membuat Indeks Saringan > z <- c(5,2,-3,8) > w <- z[z*z > 8] > w [1] Perhatikan bagian demi bagian > z <- c(5,2,-3,8) > z [1] > z*z > 8 [1] TRUE FALSE TRUE TRUE > z[c(TRUE,FALSE,TRUE,TRUE)] [1]
9
Atau digunakan utk menyaring dr vektor lain.
atau lebih ringkas > z <- c(5,2,-3,8) > j <- z*z > 8 > j [1] TRUE FALSE TRUE TRUE > y <- c(1,2,30,5) > y[j] [1] > z <- c(5,2,-3,8) > y <- c(1,2,30,5) > y[z*z > 8] [1] Contoh lain, bagi unsur-unsur vektor x yg lebih besar dari 3, kita ingin ganti dengan 0. > x[x > 3] <- 0 diperiksa sbb: > x <- c(1,3,8,2,20) > x[x > 3] <- 0 > x [1]
10
Menyaring dengan Perintah Subset()
Berbeda dalam menangani NA > x <- c(6,1:3,NA,12) > x [1] NA 12 > x[x > 5] [1] 6 NA 12 > subset(x,x > 5) [1] 6 12
11
Memilih dengan Perintah which()
Ingin mencari subskrip (posisi) dimana syarat penyaringan terpenuhi. > z <- c(5,2,-3,8) > which(z*z > 8) [1] 1 3 4 Ingat program utk mencari subskrip dr angka 1 pertama. first1 <- function(x) { for (i in 1:length(x)) { if (x[i] == 1) break # keluar dr loop } return(i) first1a <- function(x) return(which(x == 1)[1])
12
Perintah ifelse() Bentuk umumnya adalah: ifelse(b,u,v) dimana b harus berupa vektor logika (Boolean) Hasil dari perinta ifelse akan berupa vektor, dimana > x <- 1:10 > y <- ifelse(x %% 2 == 0,5,12) # %% modulo operator > y [1] Unsur-unsur dr vektor hasil, yaitu y, adalah
13
Contoh lain: > x <- c(5,2,9,12) > ifelse(x > 6,2*x,3*x) [1] Memeriksa Kesamaan Vektor > x <- 1:3 > y <- c(1,3,4) > x == y [1] TRUE FALSE FALSE > all(x == y) [1] FALSE atau > identical(x,y) [1] FALSE
14
Tapi hati-hati dengan perintah identical
> x <- 1:2 > y <- c(1,2) > x [1] 1 2 > y > identical(x,y) [1] FALSE > typeof(x) [1] "integer" > typeof(y) [1] "double"
15
Memberi Label (Nama) kepada Unsur-unsur Vektor
> x <- c(1,2,4) > names(x) NULL > names(x) <- c("a","b","ab") [1] "a" "b" "ab" > x a b ab 1 2 4 Merujuk unsur dengan labelnya > x <- c(1,2,4) > names(x) <- c("a","b","ab") > x["b"] b 2 Buang label yg terlanjur diberikan > names(x) <- NULL > x [1] 1 2 4
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.