Fungsi R


Fungsi adalah blok kode yang hanya berjalan ketika dipanggil.

Anda dapat meneruskan data, yang dikenal sebagai parameter, ke dalam suatu fungsi.

Sebuah fungsi dapat mengembalikan data sebagai hasilnya.


Membuat Fungsi

Untuk membuat fungsi, gunakan function()kata kunci:

Contoh

my_function <- function() { # create a function with the name my_function
  print("Hello World!")
}

Panggil Fungsi

Untuk memanggil fungsi, gunakan nama fungsi diikuti dengan tanda kurung, seperti my_function() :

Contoh

my_function <- function() {
  print("Hello World!")
}

my_function() # call the function named my_function

Argumen

Informasi dapat diteruskan ke fungsi sebagai argumen.

Argumen ditentukan setelah nama fungsi, di dalam tanda kurung. Anda dapat menambahkan argumen sebanyak yang Anda inginkan, cukup pisahkan dengan koma.

Contoh berikut memiliki fungsi dengan satu argumen (fname). Saat fungsi dipanggil, kami memberikan nama depan, yang digunakan di dalam fungsi untuk mencetak nama lengkap:

Contoh

my_function <- function(fname) {
  paste(fname, "Griffin")
}

my_function("Peter")
my_function("Lois")
my_function("Stewie")

Parameter atau Argumen?

Istilah "parameter" dan "argumen" dapat digunakan untuk hal yang sama: informasi yang diteruskan ke suatu fungsi.

Dari perspektif fungsi:

Parameter adalah variabel yang terdaftar di dalam tanda kurung dalam definisi fungsi.

Argumen adalah nilai yang dikirim ke fungsi saat dipanggil.



Jumlah Argumen

Secara default, suatu fungsi harus dipanggil dengan jumlah argumen yang benar. Artinya jika fungsi Anda mengharapkan 2 argumen, Anda harus memanggil fungsi dengan 2 argumen, tidak lebih, dan tidak kurang:

Contoh

Fungsi ini mengharapkan 2 argumen, dan mendapat 2 argumen:

my_function <- function(fname, lname) {
  paste(fname, lname)
}

my_function("Peter", "Griffin")

Jika Anda mencoba memanggil fungsi dengan 1 atau 3 argumen, Anda akan mendapatkan kesalahan:

Contoh

Fungsi ini mengharapkan 2 argumen, dan mendapat 1 argumen:

my_function <- function(fname, lname) {
  paste(fname, lname)
}

my_function("Peter")

Nilai Parameter Default

Contoh berikut menunjukkan cara menggunakan nilai parameter default.

Jika kita memanggil fungsi tanpa argumen, ia menggunakan nilai default:

Contoh

my_function <- function(country = "Norway") {
  paste("I am from", country)
}

my_function("Sweden")
my_function("India")
my_function() # will get the default value, which is Norway
my_function("USA")

Mengembalikan Nilai

Untuk membiarkan suatu fungsi mengembalikan hasil, gunakan return()fungsi:

Contoh

my_function <- function(x) {
  return (5 * x)
}

print(my_function(3))
print(my_function(5))
print(my_function(9))

Output dari kode di atas akan menjadi:

[1] 15
[1] 25
[1] 45

Fungsi Bersarang

Ada dua cara untuk membuat fungsi bersarang:

  • Panggil fungsi di dalam fungsi lain.
  • Tulis fungsi di dalam fungsi.

Contoh

Panggil fungsi di dalam fungsi lain:

Nested_function <- function(x, y) {
  a <- x + y
  return(a)
}

Nested_function(Nested_function(2,2), Nested_function(3,3))

Contoh Dijelaskan

Fungsi memberitahu x untuk menambahkan y.

Input pertama Nested_function(2,2) adalah "x" dari fungsi utama.

Input kedua Nested_function(3,3) adalah "y" dari fungsi utama.

Oleh karena itu, keluarannya adalah (2+2) + (3+3) = 10 .

Contoh

Tulis fungsi di dalam fungsi:

Outer_func <- function(x) {
  Inner_func <- function(y) {
    a <- x + y
    return(a)
  }
  return (Inner_func)
}
output <- Outer_func(3) # To call the Outer_func
output(5)

Contoh Dijelaskan

Anda tidak dapat langsung memanggil fungsi karena Inner_func telah didefinisikan (bersarang) di dalam Outer_func.

Kita perlu memanggil Outer_func terlebih dahulu untuk memanggil Inner_func sebagai langkah kedua.

Kita perlu membuat variabel baru yang disebut output dan memberinya nilai, yaitu 3 di sini.

Kami kemudian mencetak output dengan nilai "y" yang diinginkan, yang dalam hal ini adalah 5.

Oleh karena itu, keluarannya adalah 8 (3 + 5).


Pengulangan

R juga menerima fungsi rekursi, yang berarti fungsi yang ditentukan dapat memanggil dirinya sendiri.

Rekursi adalah konsep matematika dan pemrograman yang umum. Ini berarti bahwa suatu fungsi memanggil dirinya sendiri. Ini memiliki manfaat yang berarti bahwa Anda dapat mengulang data untuk mencapai hasil.

Pengembang harus sangat berhati-hati dengan rekursi karena dapat dengan mudah tergelincir ke dalam penulisan fungsi yang tidak pernah berhenti, atau fungsi yang menggunakan jumlah memori atau daya prosesor yang berlebihan. Namun, ketika ditulis dengan benar, rekursi bisa menjadi pendekatan pemrograman yang sangat efisien dan elegan secara matematis.

Dalam contoh ini, tri_recursion()adalah fungsi yang telah kita definisikan untuk memanggil dirinya sendiri ("recurse"). Kami menggunakan kvariabel sebagai data, yang mengurangi ( -1) setiap kali kami berulang. Rekursi berakhir ketika kondisinya tidak lebih besar dari 0 (yaitu ketika 0).

Bagi pengembang baru, perlu beberapa saat untuk mengetahui cara kerjanya, cara terbaik untuk mengetahuinya adalah dengan menguji dan memodifikasinya.

Contoh

tri_recursion <- function(k) {
  if (k > 0) {
    result <- k + tri_recursion(k - 1)
    print(result)
  } else {
    result = 0
    return(result)
  }
}
tri_recursion(6)