Ana içeriğe geç
Modül 3 · Ders 1 ders 2Kurstaki 5/10~12 min
Modül dersleri (1/2)

Yazma İşlevleri

R'de işlevler birinci sınıf vatandaşlardır (kendi başlarına nesnelerdir) ve kodunuzu modüler, yeniden kullanılabilir ve iyi organize edilmiş bloklar halinde yapılandırmanıza olanak tanır.

Fonksiyon Tanımlama

Bir işlevi tanımlamak için function anahtar sözcüğünü kullanın ve oluşturulan nesneyi <- atama operatörünü kullanarak bir değişkene (işlev adı) atayın:

R
# Simple function definition
greet_user <- function() {
  print("Hello, User!")
}

# Invoking the function
greet_user()

Parametreler ve Dönüş Değerleri

Fonksiyonlar bir veya daha fazla parametreyi kabul edebilir. Açıkça bir değer döndürmek için return() işlevini kullanın. return() atlanırsa, R, işlev gövdesinde en son değerlendirilen ifadenin değerini otomatik olarak döndürür.

R
# Function that adds two numbers and returns the result
add_numbers <- function(a, b) {
  sum_result <- a + b
  return(sum_result)
}

total <- add_numbers(5, 7)
print(total) # Prints 12

Varsayılan Bağımsız Değişkenler

Bir fonksiyonun parametreleri için varsayılan değerleri belirleyebilirsiniz. İşlev çağrıldığında argüman sağlanmazsa, R varsayılan değeri kullanacaktır:

R
# The function uses a default discount rate of 10% (0.10)
apply_discount <- function(price, discount = 0.10) {
  discounted_price <- price * (1 - discount)
  return(discounted_price)
}

# Uses the default (10%)
print(apply_discount(100)) # Prints 90

# Specifies a custom discount (20%)
print(apply_discount(100, 0.20)) # Prints 80

Listelerle Birden Çok Değer Döndürme

R'deki bir işlev return() aracılığıyla yalnızca tek bir nesneyi doğrudan döndürebildiğinden, birden fazla değer döndürmemiz gerekirse (muhtemelen farklı türde veya uzunluklarda), bunları bir liste (list) içinde paketleyebiliriz:

R
get_stats <- function(v) {
  stats <- list(
    mean_val = mean(v),
    max_val = max(v)
  )
  return(stats)
}

results <- get_stats(c(10, 20, 30))
print(results$mean_val) # Prints 20

Anonim İşlevler ve sapply

Anonim işlevler (satır içi tanımlanmış bir adı olmayan işlevler), bir vektörün veya listenin öğelerine hızlı dönüşümler uygulamak için sapply() gibi işlevlerle eşleştirildiğinde son derece kullanışlıdır.

Modern R'de (sürüm 4.1.0'dan itibaren), klasik function(x)'ye ek olarak \(x) kısayol sözdizimini kullanarak anonim işlevleri tanımlayabilirsiniz:

R
v <- c(1, 2, 3)

# Using sapply with a classic anonymous function
sapply(v, function(x) x^2) # 1 4 9

# Using sapply with shorthand syntax (R >= 4.1.0)
sapply(v, \(x) x^2) # 1 4 9

Kendin dene

Egzersiz#r.m3.l1.e1
Denemeler: 0Yükleniyor…

Tek bir x bağımsız değişkenini kabul eden ve return() işlevini kullanarak onun çift değerini (x * 2) döndüren, double_value adlı bir işlev tanımlayın.

Düzenleyici yükleniyor…
İpucu göster

Şununla şunu belirtelim: double_value <- function(x) { return(x * 2) }

3 denemeden sonra çözüm mevcut

Egzersiz#r.m3.l1.e2
Denemeler: 0Yükleniyor…

İki bağımsız değişkeni kabul eden, hesaplama_alanı adında bir işlev tanımlayın: genişlik ve yükseklik. İşlev, return() işlevini kullanarak ürünlerini döndürmelidir.

Düzenleyici yükleniyor…
İpucu göster

Fonksiyonu genişlik ve yükseklik parametreleriyle tanımlayın ve genişlik * yükseklik değerini döndürün.

3 denemeden sonra çözüm mevcut

Egzersiz#r.m3.l1.e3
Denemeler: 0Yükleniyor…

Gerekli bir bağımsız değişken miktarını ve varsayılan değeri 0,22 olan isteğe bağlı bir bağımsız değişken oranını kabul eden, hesapla_vergi adlı bir işlev tanımlayın. Ürün miktarını * ücretini döndürün.

Düzenleyici yükleniyor…
İpucu göster

ABD: hesapla_tax <- function(tutar, oran = 0,22) { return(tutar * oran) }

3 denemeden sonra çözüm mevcut

Egzersiz#r.m3.l1.e4
Denemeler: 0Yükleniyor…

Bir v vektörünü kabul eden analyze_vector adında bir işlev tanımlayın. İşlev, sum (vektörün toplamı, sum(v) ile hesaplanan) ve len (vektörün uzunluğu, uzunluk(v) ile hesaplanan) adlı iki öğeyi içeren bir liste döndürmelidir.

Düzenleyici yükleniyor…
İpucu göster

Sözdizimini kullanın: analyze_vector <- function(v) { return(liste(toplam = toplam(v), len = uzunluk(v))) }

3 denemeden sonra çözüm mevcut

Egzersiz#r.m3.l1.e5
Denemeler: 0Yükleniyor…

V vektörü verildiğinde, her bir öğenin değerini üç katına çıkarmak (3 ile çarpmak) için sapply() işlevini anonim bir işlevle birlikte kullanın. Sonucu üç katına çıkan değişkene kaydedin.

Düzenleyici yükleniyor…
İpucu göster

Kullanımı: üçe katlanmış <- sapply(v, function(x) x * 3)

3 denemeden sonra çözüm mevcut