פרק 4 - פונקציות

מה זאת פונקציה

פונקציות הן אבני היסוד של R וניתן להגדיר את רובה המוחלט של השפה רק באמצעותן. באופן כללי - פונקציה היא כל מניפולציה שמקבלת קלט ומוציאה פלט בהתאם. אפשר להסתכל על פונקציה כעל קופסא סגורה - על כל קלט מסוים שנכניס לפונקציה, יצא פלט מסוים. כדי להסביר מה פונקציה עושה מספיק לתאר מה היא מקבלת כקלט (input) ומה היא מוציאה כפלט (output).

מבנה כללי

name_of_function <- function(var1, var2, var3=default_value) {
  ** some code **
  return(var4)
}

דוגמא

נגדיר פונקציה פשוטה בשם “bigger” אשר מקבלת שני מספרים ומחזירה את הגדול מביניהם. אם המספרים שווים בגודלם, הפונקציה ,תחזיר את המספר השני.
נריץ את הפונקציה על ידי קריאה לשם שלה, יחד עם המשתנים בתוך סוגריים עגולים.

bigger <- function(num1, num2) {
  if (num1 > num2) {
    return(num1)
  }
  else {
    return(num2)
    }
}
bigger_num <- bigger(24,29)
print(paste('The bigger number is:', bigger_num))
## [1] "The bigger number is: 29"
bigger_num <- bigger(57,36)
print(paste('The bigger number is:', bigger_num))
## [1] "The bigger number is: 57"

ערכי ברירת מחדל

פונקציה יכולה לקבל פרמטרים בתור ברירת מחדל (default). המשמעות היא שכל משתנה שמוגדרת לו ברירת מחדל הופך להיות אופציונלי. כלומר, אם המשתמש לא הכניס אותו כקלט לפונקציה, הפונקציה פשוט תקבל אותו עם הערך הדיפולטי.

נגדיר שוב את הפונקציה מהדוגמא הקודמת, אך הפעם num2 יקבל את הערך 6 כברירת מחדל.

bigger <- function(num1, num2=6) {
  if (num1 > num2) {
    return(num1)
  }
  else {
    return(num2)
    }
}
bigger_num <- bigger(24)
print(paste('The bigger number is:', bigger_num))
## [1] "The bigger number is: 24"
bigger_num <- bigger(3)
print(paste('The bigger number is:', bigger_num))
## [1] "The bigger number is: 6"
# we can still change those two values!
bigger_num <- bigger(num1 = 7, num2 = 8)
print(paste('The bigger number is:', bigger_num))
## [1] "The bigger number is: 8"