R Cheat Sheet: דף עזר לשפת R
עודכן לאחרונה
Hello World והשמה
אופרטור ההשמה המקובל ב-R הוא <- (גם האופרטור = עובד).
| פעולה | תחביר |
|---|---|
| הדפסת ערך | print("Hello, World!") |
| הדפסה אוטומטית (בקונסולה) | "Hello, World!" |
| שרשור והדפסה | cat("Hi", name, "\n") |
| השמה (הדרך המקובלת) | x <- 5 |
| השמה (גם תקינה) | x = 5 |
| השמה ימינה | 5 -> x |
| הערה | # this is a comment |
| הרצת סקריפט | Rscript app.R |
טיפוסי נתונים וווקטורים
הווקטור הוא מבנה הנתונים הבסיסי של R; אפילו ערך יחיד הוא ווקטור באורך 1.
| פעולה | תחביר |
|---|---|
| ווקטור מספרי | v <- c(1, 2, 3) |
| ווקטור תווים | s <- c("a", "b") |
| ווקטור לוגי | b <- c(TRUE, FALSE) |
| רצף מספרים שלמים | 1:10 |
| רצף עם קפיצה | seq(0, 1, by = 0.1) |
| חזרה על ערכים | rep(0, times = 5) |
| טיפוסים בסיסיים | numeric, character, logical, integer, complex |
| בדיקה / המרה של טיפוס | class(x), as.numeric("42") |
פעולות על ווקטורים
הפעולות הן וקטוריות ומופעלות איבר אחר איבר; האינדקסים מתחילים מ-1.
| פעולה | תחביר |
|---|---|
| גישה לאיבר (מתחיל מ-1) | v[1] |
| חיתוך טווח | v[2:4] |
| סינון לוגי | v[v > 2] |
| הסרת איבר | v[-1] |
| חישוב איבר אחר איבר | v * 2, v1 + v2 |
| אורך | length(v) |
| פונקציות צמצום נפוצות | sum(v), mean(v), max(v) |
| מיון / היפוך | sort(v), rev(v) |
| ווקטור עם שמות | c(a = 1, b = 2) |
Data frames
data frame היא טבלה של עמודות, שכל אחת מהן היא ווקטור באותו אורך.
| פעולה | תחביר |
|---|---|
| יצירת data frame | df <- data.frame(name = c("Ada"), age = c(30)) |
| השורות הראשונות / האחרונות | head(df), tail(df) |
| ממדים | nrow(df), ncol(df), dim(df) |
| שמות העמודות | names(df), colnames(df) |
| בחירת עמודה | df$age או df[["age"]] |
| בחירת שורות / עמודות | df[1, ], df[, "age"] |
| סינון שורות | df[df$age > 18, ] |
| הוספת עמודה | df$adult <- df$age >= 18 |
| סטטיסטיקה מסכמת | summary(df) |
| סקירת המבנה | str(df) |
Factors ורשימות
Factors שומרים נתונים קטגוריאליים; רשימות מכילות איברים מטיפוסים שונים.
| פעולה | תחביר |
|---|---|
| יצירת factor | f <- factor(c("low", "high")) |
| הרמות של factor | levels(f) |
| factor מסודר | factor(x, ordered = TRUE) |
| ספירה לפי רמה | table(f) |
| יצירת רשימה | l <- list(name = "Ada", scores = c(1, 2)) |
| גישה לפי שם | l$name או l[["name"]] |
| גישה לפי מיקום | l[[1]] |
| תת-רשימה (נשארת רשימה) | l[1] |
| אורך / שמות | length(l), names(l) |
בקרת זרימה
תנאים נכתבים בסוגריים עגולים ובלוקים בסוגריים מסולסלים.
| פעולה | תחביר |
|---|---|
| If / else if / else | if (x > 0) { ... } else if (x < 0) { ... } else { ... } |
| if-else וקטורי | ifelse(v > 0, "pos", "neg") |
| לולאת for | for (i in 1:10) { ... } |
| for על ווקטור | for (x in v) { ... } |
| לולאת while | while (x < 100) { ... } |
| repeat עם break | repeat { if (done) break } |
| Switch | switch(key, a = 1, b = 2) |
| אופרטורים לוגיים | &&, ||, ! (סקלרי); &, | (וקטורי) |
פונקציות
פונקציות הן אזרחיות מדרגה ראשונה; הביטוי האחרון שחושב הוא הערך המוחזר.
| פעולה | תחביר |
|---|---|
| הגדרת פונקציה | add <- function(a, b) { a + b } |
| החזרה מפורשת | return(a + b) |
| ארגומנט ברירת מחדל | greet <- function(name = "World") { ... } |
| ארגומנט משתנה (variadic) | f <- function(...) { sum(...) } |
| קריאה לפי שם | box(w = 2, h = 3) |
| פונקציה אנונימית | function(x) x * 2 |
| פונקציה אנונימית (קיצור) | \(x) x * 2 |
| העברה לפונקציה מסדר גבוה | sapply(1:3, function(x) x^2) |
משפחת apply
הפעלת פונקציה על נתונים בלי לכתוב לולאות מפורשות.
| פונקציה | מה היא עושה |
|---|---|
apply(m, 1, sum) | הפעלה על שורות (1) או עמודות (2) של מטריצה |
sapply(v, f) | הפעלה על ווקטור, עם פישוט לווקטור או מטריצה |
lapply(v, f) | הפעלה על ווקטור, תמיד מחזירה רשימה |
vapply(v, f, numeric(1)) | כמו sapply אבל עם בדיקת טיפוס ההחזרה |
mapply(f, a, b) | הפעלה על כמה ווקטורים במקביל |
tapply(x, group, mean) | הפעלת פונקציה לכל קבוצה |
Map(f, a, b) | apply רב-משתני שמחזיר רשימה |
Reduce(+, v) | צמצום ווקטור עם פונקציה בינארית |
פונקציות נפוצות לעיבוד נתונים וסטטיסטיקה
פונקציות בסיס שימושיות לסיכום נתונים ולשינוי המבנה שלהם.
| פונקציה | מה היא עושה |
|---|---|
mean(v) / median(v) | ממוצע / חציון |
sd(v) / var(v) | סטיית תקן / שונות |
min(v) / max(v) / range(v) | הקטן ביותר / הגדול ביותר / שניהם |
quantile(v) | קוונטילים (למשל רבעונים) |
table(x) | ספירת שכיחויות של ערכים |
unique(v) / duplicated(v) | ערכים ייחודיים / סימון כפילויות |
is.na(v) / na.omit(df) | מציאה / הסרה של ערכים חסרים |
aggregate(y ~ g, df, mean) | סיכום y לפי קבוצה g |
order(v) | סדר אינדקסים למיון |
cor(x, y) | מתאם בין שני ווקטורים |
התחביר של R שאתם צריכים הכי הרבה, בעמוד אחד. ה-R cheat sheet הזה הוא דף עזר מהיר לליבת השפה: השמה וטיפוסי נתונים, ווקטורים ופעולות על ווקטורים, data frames, factors ורשימות, בקרת זרימה, פונקציות ומשפחת apply שמשמשת בכל ניתוח נתונים ב-rstats.
כל מה שכאן הוא base R שרץ בהתקנה רגילה, בלי חבילות נוספות. העתיקו את מה שאתם צריכים, או נסו כל קטע קוד בזמן אמת בעורך האונליין של R, בלי שום הגדרות.
שאלות נפוצות על ה-R cheat sheet
האם ה-R cheat sheet הזה חינמי?
כן. ה-R cheat sheet הזה חינמי לגמרי, בלי צורך בהרשמה. שמרו אותו במועדפים וחזרו אליו בכל פעם שתצטרכו לבדוק פעולה על ווקטור, מתודה של data frame או פונקציה סטטיסטית.
האם האינדקסים של ווקטורים ב-R באמת מתחילים מ-1?
v[1] מחזיר את האיבר הראשון ו-v[length(v)] מחזיר את האחרון. לאינדקסים שליליים יש משמעות מיוחדת: v[-1] מסיר את האיבר הראשון ולא סופר מהסוף. המוסכמה הזו חלה על ווקטורים, רשימות ו-data frames כאחד.מה זה data frame ב-R?
df[rows, columns], בוחרים עמודה עם df$name ובודקים אותו עם str(df) או summary(df).אפשר לתרגל R אונליין?
כן. פתחו את עורך האונליין של R כדי להריץ כל קטע קוד מדף העזר הזה בדפדפן, בלי להתקין R או RStudio. כשתרצו מסגרת מסודרת, קורס ה-R האינטראקטיבי והחינמי של Coddy ייקח אתכם צעד אחר צעד מווקטורים ו-data frames ועד משפחת apply וסטטיסטיקה.
האם דף העזר הזה מתאים למתחילים?
כן. הוא מסודר מהנושאים הנפוצים ביותר (השמה, ווקטורים, data frames) ועד המתקדמים (משפחת apply ופונקציות סטטיסטיות), כך שאפשר להשתמש בחלקים העליונים כבר מהיום הראשון ולהתקדם לשאר בהמשך.