תרגילים בנושא פונקציות

תרגיל 1: צרי פונקציה בשם num_to_txt שמקבלת ספרה מ-0 עד 9 (numeric) ומחזירה אותה בצורה טקסטואלית (character). לדוגמא:

num_to_txt(4) # returns "four"
num_to_txt <- function(digit) {
  if (class(digit) == "numeric" & nchar(digit) == 1) {
    if (digit == 0) {return ('zero')}
    else if (digit == 1) {return ('one')}
    else if (digit == 2) {return ('two')}
    else if (digit == 3) {return ('three')}
    else if (digit == 4) {return ('four')}
    else if (digit == 5) {return ('five')}
    else if (digit == 6) {return ('six')}
    else if (digit == 7) {return ('seven')}
    else if (digit == 8) {return ('eight')}
    else if (digit == 9) {return ('nine')}
  }
  else {return('not a valid digit. please try again')}
}
num_to_txt(3) # "three"
num_to_txt(7) # "seven"
num_to_txt(13) # "Not a valid digit. please try again"
num_to_txt(9) # "nine"
# another way, with dyplr: 
library('tidyverse')
num_to_txt <- function(digit) {
  if (class(digit) == "numeric" & nchar(digit) == 1) {
    edited <- data.frame(digit) %>% 
      mutate(converted = case_when(
        . == 0 ~ 'zero',
        . == 1 ~ 'one',
        . == 2 ~ 'two',
        . == 3 ~ 'three',
        . == 4 ~ 'four',
        . == 5 ~ 'five',
        . == 6 ~ 'six',
        . == 7 ~ 'seven',
        . == 8 ~ 'eight',
        . == 9 ~ 'nine',))
    return(edited$converted)
  }
  else {return('not a valid digit. please try again')}
}
num_to_txt(5) # "five"
num_to_txt(8) # "eight"

תרגיל 2: צרי פונקציה בשם is_even שמקבלת מספר (numeric) ומחזירה האם הוא זוגי (TRUE או FALSE). לדוגמא:

is_even(456) # returns TRUE
is_even <- function(num) {
  if (class(num) == "numeric") {
    if (num %% 2 == 0) {return (TRUE)}
    else {return (FALSE)}
  }
  else {return('not a valid number please try again')}
}
is_even(2) # TRUE
is_even(67253) # FALSE
is_even(3586976) # TRUE
is_even('34') # 'Not a valid number please try again'