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
k
variabel 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)