Implementasi Perulangan dan Return (repeat, while, return) pada Fungsi di R

1. Fungsi dengan repeat Statement

# Fungsi dengan perulangan repeat
cobarepeat <- function(n) {
  data <- NULL
  if (n > 0) {
    repeat {
      data[n] <- n
      n <- n - 1
      if (n == 0) break
    }
    data
  } else {
    cat("Pesan kesalahan: n harus positif! \n")
  }
}

# Uji fungsi
cobarepeat(10)
##  [1]  1  2  3  4  5  6  7  8  9 10
cobarepeat(-1)
## Pesan kesalahan: n harus positif!

Penjelasan:

  • Fungsi cobarepeat() menggunakan perulangan repeat untuk mengisi vektor data dari n hingga 1.

  • Jika n <= 0, akan muncul pesan kesalahan.

  • repeat akan terus berjalan hingga kondisi n == 0 terpenuhi, lalu break.

2. Fungsi dengan while Statement

# Fungsi dengan perulangan while
cobarepeat2 <- function(n) {
  data <- NULL
  if (n > 0) {
    while (n > 0) {
      data[n] <- n
      n <- n - 1
    }
    data
  } else {
    cat("Pesan kesalahan: n harus positif! \n")
  }
}

# Uji fungsi
cobarepeat2(10)
##  [1]  1  2  3  4  5  6  7  8  9 10
cobarepeat2(-1)
## Pesan kesalahan: n harus positif!

Penjelasan:

  • Fungsi cobarepeat2() memakai perulangan while, lebih aman karena ada kondisi eksplisit.

  • Mengisi data[n] dengan nilai n, menurun hingga 1.

  • Struktur logikanya hampir sama dengan versi repeat, hanya beda bentuk kontrol.

3. Fungsi dengan repeat dan return

# Fungsi dengan repeat dan return
cobarepeat3 <- function(n) {
  data <- NULL
  if (n > 0) {
    repeat {
      data[n] <- n
      n <- n - 1
      if (n == 0) return(data)
    }
    data  # sebenarnya tidak akan sampai sini karena return lebih dulu
  } else {
    cat("Pesan kesalahan: n harus positif! \n")
  }
}

# Uji fungsi
cobarepeat3(10)
##  [1]  1  2  3  4  5  6  7  8  9 10
cobarepeat3(-1)
## Pesan kesalahan: n harus positif!

Penjelasan:

  • Fungsi cobarepeat3() mirip dengan cobarepeat(), namun menggunakan return() untuk mengembalikan hasil dan langsung keluar dari fungsi.

  • return(data) memastikan hasil langsung dikembalikan saat selesai, tanpa melanjutkan proses.

  • Perlu dicatat bahwa bagian data di luar repeat sebenarnya tidak akan dijalankan karena sudah return.