Pendahuluan

Array adalah struktur data penting dalam pemrograman R yang digunakan untuk menyimpan data dalam satu, dua, atau tiga dimensi serta digunakan untuk menyimpan banyak elemen dengan tipe data yang sama (misalnya semua angka, semua karakter, dll), dalam satu atau lebih dimensi.

Array berbeda dari vektor biasa karena array bisa memiliki lebih dari satu dimensi (baris, kolom, lapisan, dst).

Array dalam R dibangun dengan fungsi seperti array(), matrix(), atau hasil operasi pengolahan vektor.


1. Array 1D

Konsep

Array 1D pada dasarnya sama seperti vektor.Hanya satu barisan data yang memiliki satu indeks untuk mengakses elemen.Berbentuk seperti garis atau list berurutan.

Sintaks R

# Buat Array 1D berisi angka ganjil dari 5 sampai 100
ganjil <- which(5:100 %% 2 == 1) + 4
ganjil
# atau
bilgan <- subset(5:100, 5:100 %% 2 == 1)
bilgan

# Tampilkan semua elemen yag habis dibagi 4
x <- 5:100
elemen_habis_4 <- x[which(x %% 4 == 0)]
print(elemen_habis_4)
#atau
bagi_4 <- subset(5:100, (5:100) %% 4 == 0)
bagi_4

#Urutkan array secara menurun/descending
sort(bilgan, decreasing = TRUE)

#Hitung Jumlah total dan rata-ratanya
# Menghitung jumlah total
jumlah_total <- sum(bilgan)
jumlah_total

# Menghitung rata-rata
rata_rata <- mean(bilgan)
rata_rata

### Buat Array 2D (m,n) yg elemennya kelipatan 4 dengan m,n>4
# Tentukan ukuran
m <- 5
n <- 7

Output

Output akan menampilkan array ganjil, elemen habis dibagi 4, array descending, total, dan rata-rata.

> #1
> # Buat Array 1D berisi angka ganjil dari 5 sampai 100
> ganjil <- which(5:100 %% 2 == 1) + 4
> ganjil
 [1]  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53
[26] 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
> # atau
> bilgan <- subset(5:100, 5:100 %% 2 == 1)
> bilgan
 [1]  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53
[26] 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
> 
> # Tampilkan semua elemen yag habis dibagi 4
> x <- 5:100
> elemen_habis_4 <- x[which(x %% 4 == 0)]
> print(elemen_habis_4)
 [1]   8  12  16  20  24  28  32  36  40  44  48  52  56  60  64  68  72  76  80
[20]  84  88  92  96 100
> #atau
> bagi_4 <- subset(5:100, (5:100) %% 4 == 0)
> bagi_4
 [1]   8  12  16  20  24  28  32  36  40  44  48  52  56  60  64  68  72  76  80
[20]  84  88  92  96 100
> 
> #Urutkan array secara menurun/descending
> sort(bilgan, decreasing = TRUE)
 [1] 99 97 95 93 91 89 87 85 83 81 79 77 75 73 71 69 67 65 63 61 59 57 55 53 51
[26] 49 47 45 43 41 39 37 35 33 31 29 27 25 23 21 19 17 15 13 11  9  7  5
> 
> #Hitung Jumlah total dan rata-ratanya
> # Menghitung jumlah total
> jumlah_total <- sum(bilgan)
> jumlah_total
[1] 2496
> 
> # Menghitung rata-rata
> rata_rata <- mean(bilgan)
> rata_rata
[1] 52
> 
> ### Buat Array 2D (m,n) yg elemennya kelipatan 4 dengan m,n>4
> # Tentukan ukuran
> m <- 5
> n <- 7

2. Array 2D

Konsep

Array 2D adalah matrix: terdiri dari baris dan kolom.Diperlukan dua indeks untuk mengakses elemen: baris ke berapa, kolom ke berapa.Berbentuk tabel atau persegi panjang.

Sintaks R

# Buat array 2D
a2d <- matrix(seq(4, by = 4, length.out = m * n), nrow = m, ncol = n)
print(a2d)

## Hitung brp elemen dalam array yg bernilai lebih dari (mxn)
jelmn <- sum(a2d > (m * n))
jelmn

## Tampilkan elemen pd diagonal utama
gonal <- diag(a2d)
gonal

## Hitung jumlah seluruh elemen baris ke-2
baris2 <- sum(a2d[2, ])
baris2

Output

Output akan menampilkan array 2D, jumlah elemen lebih dari m*n, elemen diagonal utama, dan jumlah baris ke-2.

> #2
> # Buat array 2D
> a2d <- matrix(seq(4, by = 4, length.out = m * n), nrow = m, ncol = n)
> print(a2d)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    4   24   44   64   84  104  124
[2,]    8   28   48   68   88  108  128
[3,]   12   32   52   72   92  112  132
[4,]   16   36   56   76   96  116  136
[5,]   20   40   60   80  100  120  140
> 
> ## Hitung brp elemen dalam array yg bernilai lebih dari (mxn)
> jelmn <- sum(a2d > (m * n))
> jelmn
[1] 27
> 
> ## Tampilkan elemen pd diagonal utama
> gonal <- diag(a2d)
> gonal
[1]   4  28  52  76 100
> 
> ## Hitung jumlah seluruh elemen baris ke-2
> baris2 <- sum(a2d[2, ])
> baris2
[1] 476
>

3. Array 3D

Konsep

Array 3D menambahkan lapisan (layer) di atas baris dan kolom.Setiap layer adalah sebuah matriks.Untuk mengakses elemen, diperlukan tiga indeks: baris, kolom, dan layer.Berbentuk tumpukan tabel atau seperti kubus.

Sintaks R

# Tidak mungkin membuat array 140 elemen dengan 89 angka unik 
# tanpa pengulangan. Solusi alternatif:
# Alternatif 1: Kurangi dimensi array ke 4x7x3 (84 elemen)
x <- 4
y <- 7
z <- 3  # Diadjust ke 3 layer

# Generate 84 angka unik 11-94
angka <- 11:94
a3d <- array(angka, dim = c(x, y, z))

# a. Layer ke-(z-3) tidak valid untuk z=3, ambil layer pertama
layer <- a3d[, , 1]
cat("a. Layer 1:\n")
print(layer)

# b. Nilai maksimum
cat("\nb. Nilai maksimum:", max(a3d))

# c. Rata-rata per kolom
cat("\nc. Rata-rata kolom:\n")
print(apply(a3d, 2, mean))

# Alternatif 2: Gunakan angka 1-140 (tapi melanggar batas <100)
# Alternatif 3: Izinkan pengulangan dengan sample()

Output

Output akan menampilkan layer pertama, nilai maksimum, dan rata-rata per kolom.

> #3
> # Tidak mungkin membuat array 140 elemen dengan 89 angka unik 
> # tanpa pengulangan. Solusi alternatif:
> # Alternatif 1: Kurangi dimensi array ke 4x7x3 (84 elemen)
> x <- 4
> y <- 7
> z <- 3  # Diadjust ke 3 layer
> 
> # Generate 84 angka unik 11-94
> angka <- 11:94
> a3d <- array(angka, dim = c(x, y, z))
> 
> # a. Layer ke-(z-3) tidak valid untuk z=3, ambil layer pertama
> layer <- a3d[, , 1]
> cat("a. Layer 1:\n")
a. Layer 1:
> print(layer)
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]   11   15   19   23   27   31   35
[2,]   12   16   20   24   28   32   36
[3,]   13   17   21   25   29   33   37
[4,]   14   18   22   26   30   34   38
> 
> # b. Nilai maksimum
> cat("\nb. Nilai maksimum:", max(a3d))

b. Nilai maksimum: 94> 
> # c. Rata-rata per kolom
> cat("\nc. Rata-rata kolom:\n")

c. Rata-rata kolom:
> print(apply(a3d, 2, mean))
[1] 40.5 44.5 48.5 52.5 56.5 60.5 64.5
> 
> # Alternatif 2: Gunakan angka 1-140 (tapi melanggar batas <100)
> # Alternatif 3: Izinkan pengulangan dengan sample()
> 

Kesimpulan