3  Fonksiyonlar

R ile fonksiyon yazmak, etkili, okunabilir ve sürdürülebilir kod oluşturmanın temel bir unsurudur. Fonksiyonlar çoğu programlama dillerinin çok önemli bir özelliğidir. Yalnızca mevcut fonksiyonları kullanmak yerine, belirli işleri yapmak için kendimize ait fonksiyonlar yazabiliriz. Ama neden fonksiyon yazmalıyız?

Bir fonksiyonun temel kod yapısı aşağıdak gibidir:

fonksiyon_adi <- function(argüman1, argüman2, ...) {
  # Fonksiyonun içeriği
  # İşlem yapılacak kod bloğu
  return(sonuc)  # Opsiyonel: Sonucun dönüşü
}

Bu yapıda:

Örneğin aşağıdaki fonksiyon bir x argümanına sahiptir ve işlemlerini bu argüman üzerinde gerçekleştirir.

Buna göre bu fonksiyon aldığı sayının karesini hesaplar ve sonucu döndürür .

# kare alma fonksiyonu
f_kare <- function(x) {
   x^2
 }

f_kare(x=15)
[1] 225

Mesela standart sapma hesaplamak için bir fonksiyon tanımlamamız gerektiğini düşünelim. Standart sapmanın nasıl hesaplandığı aşağıda belitilmiştir. Bu formülasyonu kullanarak bir fonksiyon yazalım.

\[\text{Standart Sapma} = \sqrt{\frac{1}{n} \sum{(x - \bar{x})^2}}\]

# fonksiyonu oluşturalım
f_sd <- function(x) {
  result <- sqrt(sum((x - mean(x))^2) / (length(x) - 1))
  return(result)
}

# örnek bir vektör oluşturalım

set.seed(123) # Üreteç sabitlenir
x <- rnorm(1000, 0, 1) # normal dağılımdan 1000 adet sayı üretilir

f_sd(x)
[1] 0.991695

3.1 Varsayılan Argümanlar Nedir?

Varsayılan argümanlar, bir fonksiyonun çağrılması sırasında belirtilmediği takdirde kullanılacak olan önceden belirlenmiş değerlerdir. Bu, fonksiyonun kullanılmasını esnek hale getirir ve bazı parametrelerin belirtilmemesi durumunda fonksiyonun çalışmasını sağlar. Bir fonksiyon tanımlarken, parametrelerin yanına = değer şeklinde varsayılan değerler atanabilir. Örneğin, aşağıdaki fonksiyon, x parametresine herhangi bir değer belirtilmediğinde varsayılan olarak 2’yi alır.

kare_al <- function(x = 2) {
  return(x^2)
}

# Varsayılan Argümanlar Kullanılmayan Durum:
kare_al(3)
[1] 9

Bu durumda, x parametresine 3 değeri geçirilmiştir. Dolayısıyla fonksiyon 3’ün karesi olan 9’u döndürür.

# Varsayılan Argümanlar Kullanılan Durum:
kare_al()
[1] 4

Bu durumda ise, x parametresine herhangi bir değer belirtilmemiştir. Fonksiyon, varsayılan olarak 2’yi alarak 2’nin karesi olan 4’ü döndürür.

Varsayılan Argümanların Faydaları:

  • Kullanıcıya esneklik sağlar ve belirli parametrelerin belirtilmemesi durumunda fonksiyonun hala çalışmasını sağlar.

  • Fonksiyonun daha kullanıcı dostu olmasını sağlar, çünkü tüm parametrelerin her zaman belirtilmesi gerekmez.

  • Kodun daha okunabilir olmasını sağlar, çünkü fonksiyonun ne yaptığını anlamak için varsayılan değerlerin dökümantasyonu gibi ek bilgilere ihtiyaç yoktur.

3.2 Değişken Argümanlar Nedir?

Değişken argümanlar kavramı, bir fonksiyonun istediğiniz sayıda argümanı kabul etmesini sağlar. ... (ellipsis olarak ifade edilmektedir) işareti, R programlamada değişken argümanları temsil eder. Bu özellik, fonksiyonların daha esnek ve çok amaçlı olmasını sağlar. ... işareti, bir fonksiyonun değişken sayıda argüman almasına izin verir. Fonksiyon tanımında belirli olmayan argümanlar için kullanılır. Bu şekilde, fonksiyonunuzu daha esnek hale getirebilir ve çeşitli durumlara uyum sağlayabilirsiniz.

topla <- function(...) {
  toplam <- sum(...)
  return(toplam)
}

# Kullanım
topla(1, 2, 3)
[1] 6
topla(1, 2, 3, 4, 5)
[1] 15

Bu örnekte, topla fonksiyonu değişken sayıda argüman alır. ... ifadesi, fonksiyona geçirilen tüm argümanları toplar ve sonucu döndürür.

birlestir <- function(..., ayrac = ", ") {
  metin <- paste(..., sep = ayrac)
  return(metin)
}

# Kullanım
birlestir("merhaba", "dünya", "nasılsınız?")  
[1] "merhaba, dünya, nasılsınız?"
birlestir("elma", "armut", "muz", ayrac = " - ")
[1] "elma - armut - muz"

Bu örnekte, birlestir fonksiyonu değişken sayıda metin argüman alır. ... ifadesi, fonksiyona geçirilen her bir metni belirtilen ayıracı kullanarak birleştirir.

Bu örneklerde görüldüğü gibi, ... işareti R’de fonksiyonlara esneklik kazandırır ve hem değişken hem çoklu sayıda argüman alabilmelerini sağlar. Bu özellik, fonksiyonlarınızı daha genel ve çok amaçlı hale getirmenize olanak tanır.