1. Pengolahan Objek

1.1 Operasi aljabar sederhana vektor numerik

Vektor x1 berisi 3,9,2,8

(x1 <- c(3,9,2,8))
## [1] 3 9 2 8

Vektor x2 berisi 1 sampai 4

(x2 <- 1:4)
## [1] 1 2 3 4

Meskipun panjang elemennya berbeda, maka pada vektor yg elemennya lebih pendek, perhitungannya akan diulang dari awal

(x3 <- x1 + 1:2)
## [1]  4 11  3 10
(x4 <- x1 + 1:3)
## Warning in x1 + 1:3: longer object length is not a multiple of shorter object
## length
## [1]  4 11  5  9

Perkalian dari setiap elemen pada vektor x1 dan x2

(x5 <- x1*x2)
## [1]  3 18  6 32

Setara x'x, hasilnya berbentuk skalar 1x1

(x6 <- x1 %*% x1)
##      [,1]
## [1,]  158

Setara xx', hasilnya berdimensi 4x4

(x7 <- x1 %o% x1)
##      [,1] [,2] [,3] [,4]
## [1,]    9   27    6   24
## [2,]   27   81   18   72
## [3,]    6   18    4   16
## [4,]   24   72   16   64

1.2 Operasi Dasar Vektor Karakter

Operasi dasar vektor karakter : nchar(…), paste(…), substr(…), substring(…)

  • substr(…) berfungsi mengambil elemen ke k sampai elemen ke k+n -> substr(objek, k, k+n)

  • substring(…) berfungsi mengambil elemen ke k sampai akhir atau dengan batas yang sudah ditentukan. -> substring(objek, k) atau substring(objek, k, k+n)

(y1 <- c("Mahasiswa Pascasarjana IPB")) #vektor karakter y1 
## [1] "Mahasiswa Pascasarjana IPB"
(n1 <- nchar(y1)) #panjang karakter di vektor y1 (termasuk spasi)
## [1] 26
(y2 <- c("Rara","Nilda","Barlinda","Firli","Bila"))
## [1] "Rara"     "Nilda"    "Barlinda" "Firli"    "Bila"
(n2 <- nchar(y2)) #menghitung masing-masing panjang karakter dari 5 elemen di vektor y2
## [1] 4 5 8 5 4
(n3 <- nchar(y2[2])) #menghitung panjang karakter pada elemen kedua di vektor y2 
## [1] 5
(n4 <- nchar(y2[2:3])) #menghitung panjang karakter pada elemen kedua dan ketiga di vektor y2 
## [1] 5 8
(y3 <- substr(y1,11,15)) #"pasca" #karakter ke11 sampai ke15 dari y1
## [1] "Pasca"
(y4 <- substring(y1,16)) #"sarjana IPB" #karakter ke 15 sampai akhir dari y1
## [1] "sarjana IPB"
(y5 <- substring(y1,5,9)) #"siswa" #karakter ke 4 sampai 8 dari y
## [1] "siswa"
(y6 <- substr(y2[2],2,4)) #"ild" #karakter ke2 sampai ke4 pada elemen kedua dari y2
## [1] "ild"
(y7 <- substring(y2[3],4)) #"linda" #karakter ke 4 sampai akhir pada elemen ketiga dari y2
## [1] "linda"

1.3 Operasi Dasar Matriks

(Z1 <- matrix(1:6,2,3)) #ukuran matriks 2x3
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
(Z2 <- matrix(1:6,3,2,byrow=T)) #ukuran matriks 3x2
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6
(Z3 <- matrix(6:9,2,2)) #ukuran matriks 2x2
##      [,1] [,2]
## [1,]    6    8
## [2,]    7    9

Perkalian matriks pada Z1 dan Z2 (baris dikali kolom, dimana jumlah baris pada matriks 1 harus sama dengan jumlah kolom matriks 2)

(Z4 <- Z1 %*% Z2)
##      [,1] [,2]
## [1,]   35   44
## [2,]   44   56

Perkalian matriks Z3 dan Z4 (yang dikalikan adalah masing-masing elemen)

(Z5 <- Z3 * Z4)
##      [,1] [,2]
## [1,]  210  352
## [2,]  308  504

Invers, dimana inputnya harus persegi

(INVZ <- solve(Z4))
##           [,1]      [,2]
## [1,]  2.333333 -1.833333
## [2,] -1.833333  1.458333

Identitas, jika invers dikali dengan matriks aslinya, maka hasilnya merupakan matriks identitas**

(INVZ %*% Z4)
##      [,1]         [,2]
## [1,]    1 2.842171e-14
## [2,]    0 1.000000e+00

Solusi SPL Zp=h sehingga p=z'h

(h <- c(5,11)) #vektor dengan elemen 5 dan 11
## [1]  5 11
(p <- solve(Z4,h))
## [1] -8.500  6.875

Eigen value dan eigen vactor

(e <- eigen(Z4)) #eigen value & eigen vector dr Z4 
## eigen() decomposition
## $values
## [1] 90.7354949  0.2645051
## 
## $vectors
##           [,1]       [,2]
## [1,] 0.6196295 -0.7848945
## [2,] 0.7848945  0.6196295
e$values #akses eigen values
## [1] 90.7354949  0.2645051
e$vectors #akses eigen vector
##           [,1]       [,2]
## [1,] 0.6196295 -0.7848945
## [2,] 0.7848945  0.6196295
e[[2]] #akses eigen vectors menggunakan [[]]
##           [,1]       [,2]
## [1,] 0.6196295 -0.7848945
## [2,] 0.7848945  0.6196295

2. Struktur Kendali

Mencetak i^2, dimana i=1 sampai 5

for untuk objek i dalam sekuens 1 sampai 5, maka print i^2

for (i in 1:5) print(i^2) 
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25

i=1, selama i <= 5 (i=i+1), maka argumennya dijalankan (i^2)

i<-1 
while (i<=5) { 
  print(i^2) 
  i=i+1 
} 
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25

Membangkitkan bilangan acak dengan sebaran uniform sebanyak 20

Jika i < 0,5 maka i dikalikan 100 lalu di print. Jika > 0,5, maka i/100 lalu di print. Begitu seterusnya perintah diulang sampai y (bilangan acak yang sudah dibangkitkan)

y=runif(20) 
for (i in y) { 
  if(i<0.5){ 
    print(100*i) 
  } else print(i/100) 
} 
## [1] 18.73298
## [1] 9.690817
## [1] 0.008586573
## [1] 7.541434
## [1] 37.51431
## [1] 3.867765
## [1] 0.009463563
## [1] 23.462
## [1] 0.009175823
## [1] 0.005893576
## [1] 0.006901852
## [1] 0.008044245
## [1] 13.64857
## [1] 0.005075704
## [1] 0.008187084
## [1] 0.005794727
## [1] 0.008903885
## [1] 0.007914112
## [1] 0.008924392
## [1] 26.59425

Selama z <= 10, maka dibangkitkan 20 bilangan acak seragam, lalu dijumlahkan, dan kemudian dicetak. Selama z belum sampai 10, maka looping akan terus berjalan

Jika syntax dijalankan ulang, maka hasil looping berbeda-beda

z=0
while(z<=10) { 
  y=runif(20) 
  z=sum(y) 
  print(z) 
} 
## [1] 8.272254
## [1] 10.01389