פרק 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"