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:
# 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.
# 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 12Varsayı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:
# 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 80Listelerle 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:
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 20Anonim İş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:
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 9Kendin dene
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.
İpucu göster
Şununla şunu belirtelim: double_value <- function(x) { return(x * 2) }
3 denemeden sonra çözüm mevcut
İ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.
İ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
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.
İpucu göster
ABD: hesapla_tax <- function(tutar, oran = 0,22) { return(tutar * oran) }
3 denemeden sonra çözüm mevcut
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.
İ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
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.
İpucu göster
Kullanımı: üçe katlanmış <- sapply(v, function(x) x * 3)
3 denemeden sonra çözüm mevcut