R Fonksiyonları


İşlev, yalnızca çağrıldığında çalışan bir kod bloğudur.

Parametre olarak bilinen verileri bir fonksiyona geçirebilirsiniz.

Bir işlev, sonuç olarak veri döndürebilir.


İşlev Oluşturma

Bir işlev oluşturmak için function()anahtar kelimeyi kullanın:

Örnek

my_function <- function() { # create a function with the name my_function
  print("Hello World!")
}

Fonksiyon Çağır

Bir işlevi çağırmak için, işlev adını ve ardından parantez kullanın, örneğin my_function() :

Örnek

my_function <- function() {
  print("Hello World!")
}

my_function() # call the function named my_function

Argümanlar

Bilgiler, argümanlar olarak işlevlere aktarılabilir.

Bağımsız değişkenler, işlev adından sonra parantez içinde belirtilir. İstediğiniz kadar argüman ekleyebilirsiniz, sadece virgülle ayırın.

Aşağıdaki örnekte tek bağımsız değişkenli (fname) bir işlev vardır. İşlev çağrıldığında, işlevin içinde tam adı yazdırmak için kullanılan bir ad iletiyoruz:

Örnek

my_function <- function(fname) {
  paste(fname, "Griffin")
}

my_function("Peter")
my_function("Lois")
my_function("Stewie")

Parametreler veya Argümanlar?

"Parametre" ve "argüman" terimleri aynı şey için kullanılabilir: bir işleve iletilen bilgiler.

Bir fonksiyonun bakış açısından:

Parametre, işlev tanımında parantez içinde listelenen değişkendir.

Argüman, çağrıldığında işleve gönderilen değerdir.



Argüman Sayısı

Varsayılan olarak, bir işlev doğru sayıda bağımsız değişkenle çağrılmalıdır. Yani, işleviniz 2 bağımsız değişken bekliyorsa, işlevi daha fazla veya daha az değil, 2 bağımsız değişkenle çağırmanız gerekir:

Örnek

Bu işlev 2 bağımsız değişken bekler ve 2 bağımsız değişken alır:

my_function <- function(fname, lname) {
  paste(fname, lname)
}

my_function("Peter", "Griffin")

İşlevi 1 veya 3 bağımsız değişkenle çağırmaya çalışırsanız bir hata alırsınız:

Örnek

Bu işlev 2 bağımsız değişken bekler ve 1 bağımsız değişken alır:

my_function <- function(fname, lname) {
  paste(fname, lname)
}

my_function("Peter")

Varsayılan Parametre Değeri

Aşağıdaki örnek, varsayılan bir parametre değerinin nasıl kullanılacağını gösterir.

Fonksiyonu argüman olmadan çağırırsak, varsayılan değeri kullanır:

Örnek

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")

Dönüş Değerleri

Bir işlevin sonuç döndürmesine izin vermek için işlevi kullanın return():

Örnek

my_function <- function(x) {
  return (5 * x)
}

print(my_function(3))
print(my_function(5))
print(my_function(9))

Yukarıdaki kodun çıktısı şöyle olacaktır:

[1] 15
[1] 25
[1] 45

İç İçe İşlevler

Yuvalanmış bir işlev oluşturmanın iki yolu vardır:

  • Başka bir işlev içindeki bir işlevi çağırın.
  • Bir fonksiyon içinde bir fonksiyon yazın.

Örnek

Başka bir işlev içindeki bir işlevi çağırın:

Nested_function <- function(x, y) {
  a <- x + y
  return(a)
}

Nested_function(Nested_function(2,2), Nested_function(3,3))

Örnek Açıklama

İşlev, x'e y'yi eklemesini söyler.

İlk giriş Nested_function(2,2) ana işlevin "x" idir.

İkinci giriş Nested_function(3,3) ana işlevin "y"sidir.

Bu nedenle çıktı (2+2) + (3+3) = 10'dur .

Örnek

Bir fonksiyon içinde bir fonksiyon yazın:

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)

Örnek Açıklama

Inner_func, Outer_func içinde tanımlanmış (iç içe geçmiş) olduğundan, işlevi doğrudan çağıramazsınız.

İkinci adım olarak Inner_func'u çağırmak için önce Outer_func'u çağırmamız gerekiyor.

Çıktı adında yeni bir değişken oluşturup ona burada 3 olan bir değer vermemiz gerekiyor.

Daha sonra çıktıyı, bu durumda 5 olan istenen "y" değeriyle yazdırırız.

Bu nedenle çıktı 8'dir (3 + 5).


özyineleme

R ayrıca işlev özyinelemesini de kabul eder; bu, tanımlanmış bir işlevin kendisini çağırabileceği anlamına gelir.

Özyineleme, ortak bir matematik ve programlama kavramıdır. Bu, bir işlevin kendisini çağırdığı anlamına gelir. Bu, bir sonuca ulaşmak için veriler arasında dolaşabileceğiniz anlamına gelir.

Geliştirici, özyineleme konusunda çok dikkatli olmalıdır, çünkü hiçbir zaman sona ermeyen veya aşırı miktarda bellek veya işlemci gücü kullanan bir işlevi yazmak oldukça kolay olabilir. Bununla birlikte, doğru yazıldığında özyineleme, programlama için çok verimli ve matematiksel olarak zarif bir yaklaşım olabilir.

Bu örnekte, tri_recursion()kendisini çağırmak için tanımladığımız bir fonksiyondur ("recurse"). Değişkeni, her tekrarladığımızda k( ) azalan veri olarak kullanırız . -1Özyineleme, koşul 0'dan büyük olmadığında (yani 0 olduğunda) sona erer.

Yeni bir geliştirici için bunun tam olarak nasıl çalıştığını anlaması biraz zaman alabilir, öğrenmenin en iyi yolu onu test etmek ve değiştirmektir.

Örnek

tri_recursion <- function(k) {
  if (k > 0) {
    result <- k + tri_recursion(k - 1)
    print(result)
  } else {
    result = 0
    return(result)
  }
}
tri_recursion(6)