Lembaga : UIN Maulana Malik Ibrahim Malang
Jurusan : Teknik Informatika

A. Pendahuluan


B. Membuat Matrix

# membuat vektor numerik
col1 <- c(1, 3, 4, 5, 7)
col2 <- c(2, 4, 5, 9, 8)
col3 <- c(2, 3, 1, 8, 2)

# menggabungkan vektor berdasarkan kolom
my_data <- cbind(col1, col2, col3)
my_data
##      col1 col2 col3
## [1,]    1    2    2
## [2,]    3    4    3
## [3,]    4    5    1
## [4,]    5    9    8
## [5,]    7    8    2
# Mengubah atau menambahkan nama baris
rownames(my_data) <- c("row1", "row2", 
                       "row3", "row4", 
                       "row5")
my_data
##      col1 col2 col3
## row1    1    2    2
## row2    3    4    3
## row3    4    5    1
## row4    5    9    8
## row5    7    8    2

Note :

  • cbind(): menggabungkan objek R berdasarkan kolom
  • rbind(): menggabungkan objek R berdasarkan baris
  • rownames(): mengambil atau menetapkan nama-nama baris dari objek seperti-matriks
  • colnames(): mengambil atau menetapkan nama-nama kolom dari objek seperti-matriks
t(my_data)
##      row1 row2 row3 row4 row5
## col1    1    3    4    5    7
## col2    2    4    5    9    8
## col3    2    3    1    8    2
matrix(data = NA, nrow = 3, ncol = 4, byrow = FALSE,
       dimnames = NULL)
##      [,1] [,2] [,3] [,4]
## [1,]   NA   NA   NA   NA
## [2,]   NA   NA   NA   NA
## [3,]   NA   NA   NA   NA

Note :

  • data: vektor data, Bersifat opsional
  • nrow, ncol: jumlah baris dan kolom yang diinginkan, masing-masing.
  • byrow: nilai logis. Jika FALSE (default) matriks diisi oleh kolom, jika tidak, matriks diisi oleh baris.
  • dimnames: Daftar dua vektor yang memberikan nama baris dan kolom masing-masing.
data <- matrix(
           data = c(1,2,3, 11,12,13), 
           nrow = 2, byrow = TRUE,
           dimnames = list(c("row1", "row2"), 
                           c("C.1", "C.2", "C.3"))
           )
data
##      C.1 C.2 C.3
## row1   1   2   3
## row2  11  12  13
dim(my_data) # jumlah baris dan kolom
## [1] 5 3

B. Subset Pada Matriks

# Pilih baris ke-2
my_data[2,]
## col1 col2 col3 
##    3    4    3
# Pilih baris 1 sampai 4
my_data[1:4,]
##      col1 col2 col3
## row1    1    2    2
## row2    3    4    3
## row3    4    5    1
## row4    5    9    8
# Pilih baris 2 dan 4
my_data[c(2,4),]
##      col1 col2 col3
## row2    3    4    3
## row4    5    9    8
# Pilih baris 2 dan kolom 3
my_data[2, 3]
## [1] 3

Kecualikan baris/kolom dengan pengindeksan negatif
* pengecualian data dapat dilakukan di matriks menggunakan pengindeksan negatif. Berikut cara melakukannya:

# Kecualikan baris 2 dan 3 serta kolom 3
my_data[-c(2,3), -3]
##      col1 col2
## row1    1    2
## row4    5    9
## row5    7    8

Pilihan dengan logika
* Dalam kode R di bawah ini, misalkan kita ingin hanya menyimpan baris di mana col3> = 4:

col3 <- my_data[, "col3"]
my_data[col3 >= 4, ]
## col1 col2 col3 
##    5    9    8

c. Operasi Matriks

# mengalikan masing-masing elemen matriks dengan 2
my_data*2
##      col1 col2 col3
## row1    2    4    4
## row2    6    8    6
## row3    8   10    2
## row4   10   18   16
## row5   14   16    4
# memperoleh nilai log basis 2 pada masing-masing elemen matriks
log2(my_data)
##          col1     col2     col3
## row1 0.000000 1.000000 1.000000
## row2 1.584963 2.000000 1.584963
## row3 2.000000 2.321928 0.000000
## row4 2.321928 3.169925 3.000000
## row5 2.807355 3.000000 1.000000
# Total pada tiap kolom
colSums(my_data)
## col1 col2 col3 
##   20   28   16
# Total pada tiap baris
rowSums(my_data)
## row1 row2 row3 row4 row5 
##    5   10   10   22   17
# Rata-rata tiap baris
rowMeans(my_data)
##     row1     row2     row3     row4     row5 
## 1.666667 3.333333 3.333333 7.333333 5.666667
# Rata-rata tiap kolom
colMeans(my_data)
## col1 col2 col3 
##  4.0  5.6  3.2
apply(x, MARGIN, FUN)

Note :

  • x: data matriks
  • MARGIN: Nilai yang dapat digunakan adalah 1 (untuk operasi pada baris) dan 2 (untuk operasi pada kolom)
  • FUN: fungsi yang diterapkan pada baris atau kolom
help(apply)
## starting httpd help server ... done
# Rata-rata pada tiap kolom
apply(my_data, 2, median)
## col1 col2 col3 
##    4    5    2

D. Penerapan

# Catatan : `matrix(dari : sampai, brp kolom dan baris)`
A <- matrix(1:9,3)
B <- matrix(10:18,3)
C <- matrix(1:6,3)

# penjumlahan dengan skalar
A+1
##      [,1] [,2] [,3]
## [1,]    2    5    8
## [2,]    3    6    9
## [3,]    4    7   10
# Penjumlahan dengan Matrix lainnya
A+B
##      [,1] [,2] [,3]
## [1,]   11   17   23
## [2,]   13   19   25
## [3,]   15   21   27
# Perkalian dengan Matrix lainnya
A%*%B
##      [,1] [,2] [,3]
## [1,]  138  174  210
## [2,]  171  216  261
## [3,]  204  258  312