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 באמת מתחילים מ-1?
v[1] מחזיר את האיבר הראשון ו-v[length(v)] מחזיר את האחרון. לאינדקסים שליליים יש משמעות מיוחדת: v[-1] מסיר את האיבר הראשון ולא סופר מהסוף. המוסכמה הזו חלה על ווקטורים, רשימות ו-data frames כאחד.מה זה data frame ב-R?
df[rows, columns], בוחרים עמודה עם df$name ובודקים אותו עם str(df) או summary(df).