תרגילים בנושא פונקציות
תרגיל 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'