23 Fonksiyonlar
R üzerinde fonksiyonlar, belirli bir işlevi tekrar tekrar gerçekleştirmek için yazılmış kod yapılarıdır. Bir veri analizi sürecinde veriye farklı aşamalarda aynı adımları uyguladığınızı düşünün.
Aynı kod bloğunu tekrar tekrar yazmak yerine bir fonksiyon oluşturusanız o işlemi rahat bir şekilde tekrar gerçekleştirebilirsiniz.
Genel kural olarak, eğer bir işlemi iki seferden fazla kullanıyorsanız, onu bir fonksiyon haline çevirmeniz iyi olacaktır.
Bir fonksiyonun mutlaka en az bir girdisi ve bir de çıktısı olmalıdır. Parametre kullanımı isteğe bağlıdır. Eğer yazdığınız fonksiyon işlem için farklı değişkenlere ihtiyaç duyuyorsa, parametreleri belirtmelisiniz (Şekil 23.1).
23.1 Örnek fonksiyon
İlk fonksiyonumuz çok basit bir işlemi gerçekleştirsin. İki sayıyı toplasın!
Fonksiyonumuz iki tane girdiye sahip olsun:
ab
Çıktısı ise sonuc olsun.
Fonksiyon ismi ise toplam olsun.
toplam <- function(a,b){
sonuc <- a + b
return(sonuc)
}Önce fonksiyon ismini toplam yazdık ve function komutu ile, R’a bir fonsksiyon yazacağımız beyan ettik. Bu fonksiyonun paramtreleri olarak kullanacağımız değişkenleri belirledik (a ve b).
Daha sonra bu değişkenleri kullanarak işimizi gerçekleştirdik ve sonuc değişkenini oluşturduk. Bu sonuç değişkenini ise, return komutu ile geri döndürdük.
Her fonksiyonda mutlaka bir değer geri döndürmelisiniz.
Şimdi fonksiyonu kullanalım:
toplam(a = 5, b = 12)[1] 17
Fonkisyonları kullanmadan önce mutlaka tanımlamalısınız! Eğer fonksiyonu tanımlamazsanız, kullanamazsınız.
Şimdi başka iki örnek kullanalım:
toplam(a = 12, b = 45)[1] 57
23.2 Başka bir fonksiyon
Şimdi ise, sıcaklık dönüşümü için bir fonksiyon yazalım. Santigrat derece cinsinden bir sıcaklık birimini Kelvin’e çevirelim.
Bu dönüşüm için, santigrat cinsinden dereceye, 273.15 eklememiz gerek.
Yazacağımız fonksiyon santigrat cinsinden sıcaklık birimini alsın ve Kelvin’e çevirsin. Fonkisyonun ismi ise kelvin_donusturucu olsun.
kelvin_donusturucu <- function(derece){
sonuc <- derece + 273.15
return(sonuc)
}Bu fonksiyonu kullanalım şimdi:
kelvin_donusturucu(derece = 30)[1] 303.15
