פרק 1 - משתנים
משתנה - כשמו כן הוא - אובייקט שיכול להשתנות.
ניתן לחשוב על משתנה כעל מגירה, מיקום בזיכרון עם שם. בכל פעם שננסה לגשת לאותו מיקום ע”י קריאה בשמו, נקבל חזרה את מה שנמצא בו (או - את מה שנמצא בתוך המגירה)
ניתן להגדיר משתנים ולשנות אותם בצורה הבאה:
פעולה הנקראת הֲשָׂמָה (Assignment)
var_name <- value
כשנכתוב שם לא בתוך גרשיים, R ידע להתייחס אליו כאל משתנה, וינסה לגשת אליו.
אם המשתנה קיים (כלומר מוגדר ומכיל ערך מסוים), גישה אליו תחזיר את ערכו.
אם הוא לא קיים, תקפוץ שגיאה.
var1 <- 2 # initial assignment
print(var1)## [1] 2
# we can change the value and the type of a variable
var1 <- 'different value!'
print(var1)## [1] "different value!"
print(var2) # not exist## Error in print(var2): object 'var2' not found
character
אובייקט שמורכב מרצף של תווים (אותיות, מספרים, סמלים). נמצא בתוך גרשיים.
בדוגמאות הבאות נגדיר משתנים שיכילו ערכים מסוג character:
text_var <- "this is a character!"
class(text_var)## [1] "character"
text_var2 <- 'this is also a character!'
# mixing single quotes and double quotes to implement
# quotes into the character
text_var3 <- "it's still a character!"
text_var4 <- 'Mark Twain said:
"I am an old man and have known a great many troubles,
but most of them never happened."'numeric
אובייקט שמכיל ערך מספרי, עם או בלי נקודה עשרונית.
דוגמאות:
numeric_var <- 14.6
class(numeric_var)## [1] "numeric"
numeric_var2 <- 13הערה: שמות של משתנים לא יכולים להתחיל במספר משום ש-R יזהה אותם כ-numeric.
NaN הוא אובייקט נומרי שמשמעותו היא Not a Number. לדוגמא, חלוקה ב0 תחזיר NaN:
nan_val <- 0/0
print(nan_val)## [1] NaN
class(nan_val)## [1] "numeric"
logical
אובייקט שמכיל את הערך TRUE או את הערך FALSE. שני שמות אלו הם ערכים שמורים בשפת R ויש להם הגדרה משל עצמם. כלומר, כשנכתוב FALSE בתוך הקוד, R ידע להתייחס לזה כאל הערך הלוגי FALSE.
לעומת זאת - אם נכתוב False, או false במקום, R יחפש משתנים בשמות האלו.
אם נכתוב ‘FALSE’ או “FALSE” (בתוך גרשיים), R יתייחס לזה כאל character.
NA הוא אובייקט לוגי שמשמעותו היא Not Available. כלומר, מייצג ערך חסר.
דוגמאות:
logical_var <- FALSE
print(logical_var)## [1] FALSE
class(logical_var)## [1] "logical"
logical_var2 <- (1 == 1) # returns TRUE
print(logical_var2)## [1] TRUE
class(logical_var2)## [1] "logical"
logical_var_3 <- NA
print(logical_var_3)## [1] NA
class(logical_var_3)## [1] "logical"