שתי דרכים לעבוד עם R: קונסולה מול סקריפט
ל-R יש קונסולה אינטראקטיבית (REPL: קריאה, חישוב, הדפסה, חוזר חלילה): מקלידים ביטוי, ו-R עונה מיד. הקלדת R בטרמינל, או מבט בחלונית התחתונה של RStudio, מביאים אתכם להנחיה > שבה כל שורה רצה ברגע שלוחצים Enter. הקונסולה היא המקום שבו חוקרים: מציצים בנתונים, בודקים שורה אחת, מסתכלים על התוצאה.
סקריפט R הוא פשוט קובץ טקסט רגיל של קוד R, שנשמר עם הסיומת .R. סקריפטים הם המקום שבו הניתוח חי: מתכון שניתן לשחזור, שכל אחד (כולל אתם בעתיד) יכול להריץ מההתחלה ועד הסוף ולקבל את אותה תוצאה.
סקריפט הוא לא משהו אקזוטי. הנה סקריפט שלם, הריצו אותו:
כל מה שבהמשך עוסק בדרכים השונות להזין קובץ כזה ל-R.
Rscript: הרצת קובץ משורת הפקודה
R מתקינה כלי שורת פקודה בשם Rscript שנבנה בדיוק בשביל זה. בטרמינל, בתיקייה שמכילה את הקובץ שלכם:
Rscript summary.R
R מתחילה, מריצה את הקובץ מההתחלה ועד הסוף, מדפיסה את מה שהסקריפט מדפיס, ויוצאת. זה סוס העבודה לאוטומציה: משימות cron, שרשראות עיבוד נתונים, שרתים, CI, כל מקום שבו קוד רץ בלי שאדם צופה בו.
התנהגות אחת מפתיעה את כולם פעם אחת: בקונסולה, הקלדת ביטוי חשוף כמו avg מדפיסה את הערך שלו אוטומטית. תחת Rscript, ביטוי חשוף בתוך פונקציה או לולאה עשוי לא להדפיס כלום, ולכן סקריפטים אומרים מה הם מתכוונים עם קריאות מפורשות ל-cat() או ל-print(). אמצו את ההרגל הזה מוקדם.
source(): הרצת קובץ מתוך R
כבר יושבים בסשן R ורוצים להריץ קובץ? בשביל זה יש source():
source("summary.R")
כל שורה בקובץ רצה בסשן הנוכחי שלכם, וכל מה שהסקריפט מגדיר, משתנים, פונקציות, נשאר גם אחר כך. זו כל המטרה: source() היא הדרך לטעון את פונקציות העזר שלכם לסשן אינטראקטיבי.
כברירת מחדל source() רצה בשקט, חוץ מפלט מפורש. כדי לראות אותה עובדת, הציגו כל שורה בזמן שהיא רצה:
source("summary.R", echo = TRUE)
שימו לב לנתיב היחסי: "summary.R" פירושו "בתיקיית העבודה הנוכחית", ואיפה זה תלוי באופן שבו הפעלתם את R. כש-source() או read.csv() לא מוצאות באופן מסתורי קובץ שנמצא ממש שם, תיקיית העבודה היא כמעט תמיד האשמה. ראו תיקיית העבודה.
הרצת סקריפטים ב-RStudio
RStudio נותנת לכם את שני המצבים בשתי פקודות, ושווה להפנים את ההבדל:
- Run (Ctrl+Enter, Cmd+Enter ב-macOS): מריץ בקונסולה את השורה הנוכחית או את הקטע המסומן. זה הילוך החקירה: כותבים שורה, מריצים, מסתכלים, מתקנים.
- Source (הכפתור Source, או Ctrl/Cmd+Shift+S): מריץ את כל הקובץ, בדיוק כמו
source()בקונסולה.
המלכודת בהרצה שורה אחר שורה היא שסשן הקונסולה צובר מצב: משתנים משורות שערכתם או מחקתם אחר כך עדיין חיים, כך שהסקריפט "עובד" אצלכם ונכשל אצל כל השאר. המבחן הכן לסקריפט הוא Source בסשן חדש (Session → Restart R, ואז Source). אם הוא שורד את זה, הוא ניתן לשחזור.
הפיכת סקריפט לבר-הרצה (macOS / Linux)
במערכות דמויות Unix אפשר להפוך סקריפט R לפקודה בפני עצמה. שימו שורת shebang ממש בראש הקובץ:
#!/usr/bin/env Rscript
cat("I am a self-running R script\n")
אחר כך סמנו אותו כבר-הרצה פעם אחת, והריצו אותו ישירות:
chmod +x summary.R
./summary.R
ה-shebang אומר ל-shell איזה מפרש מריץ את הקובץ; env Rscript מוצא את Rscript בכל מקום שבו הוא נמצא ב-PATH של אותו מחשב. מכיוון שהשורה מתחילה ב-#, R עצמה קוראת אותה כהערה ומתעלמת ממנה.
העברת ארגומנטים לסקריפט
סקריפטים אמיתיים מקבלים קלטים, שם קובץ, תאריך, סף, שמועברים אחרי שם הסקריפט:
Rscript report.R sales.csv 2026
בתוך הסקריפט, commandArgs(trailingOnly = TRUE) מחזירה את הארגומנטים שלכם כווקטור של תווים (trailingOnly = TRUE משמיט את הארגומנטים הפנימיים של המפרש, וכמעט תמיד רוצים את זה):
# report.R
args <- commandArgs(trailingOnly = TRUE)
input_file <- args[1]
year <- as.numeric(args[2])
cat("Reading:", input_file, "\n")
cat("Filtering to year:", year, "\n")
הכול מגיע כטקסט, "2026" ולא 2026, אז המירו עם as.numeric() לפני שעושים חשבון. אפשר לדמות את לוגיקת הפענוח בצורה שאפשר להריץ:
במה כדאי להשתמש?
- חקירת נתונים, ניסוי רעיונות → הקונסולה, או Run ב-RStudio.
- הרצת כל הניתוח → Source ב-RStudio, או
Rscriptבטרמינל. - טעינת פונקציות העזר שלכם לסשן →
source("helpers.R"). - אוטומציה, מתזמנים, שרשראות עיבוד →
Rscript, עםcommandArgs()לקלטים.
התחביר של מה שנכנס לתוך הקבצים האלה הוא השיעור הבא. ראו תחביר R.
מה לקחת מכאן
- הקונסולה מיועדת לחקירה; קובצי סקריפט
.Rמיועדים לניתוח שניתן לשחזור. Rscript file.Rמריץ סקריפט משורת הפקודה;source("file.R")מריצה אותו בתוך סשן (הוסיפוecho = TRUEכדי לצפות).- ב-RStudio, Run מריץ שורה; Source מריץ את הקובץ, ו-Source בסשן חדש הוא המבחן האמיתי לשחזוריות.
#!/usr/bin/env Rscriptיחד עםchmod +xהופכים סקריפט לבר-הרצה ישירה;commandArgs(trailingOnly = TRUE)קוראת את הארגומנטים שלו כטקסט.
הבא בתור: התחביר של R. השמה עם <-, קריאות לפונקציות, והכלל שלפיו הכול וקטור.
שאלות נפוצות
איך מריצים סקריפט R משורת הפקודה?
משתמשים בפקודה Rscript שמגיעה עם R: Rscript analysis.R. היא מריצה את הקובץ מתחילתו ועד סופו ומדפיסה כל מה שהסקריפט מדפיס. זו הדרך המקובלת להריץ R במשימות מתוזמנות, בשרשראות עיבוד ובשרתים.
מה ההבדל בין Run ל-Source ב-RStudio?
Run (Ctrl/Cmd+Enter) מריץ בקונסולה רק את השורה הנוכחית או את הקטע שנבחר, אידיאלי בזמן חקירה. Source מריץ את כל הקובץ במכה אחת, כמו ש-Rscript היה עושה. הרצת הסקריפט עם Source מסשן נקי היא המבחן האמיתי לכך שהוא עובד מההתחלה ועד הסוף.
מה source() עושה ב-R?
source("script.R") קוראת קובץ ומריצה כל שורה בו בתוך סשן ה-R הנוכחי שלכם, כך שכל המשתנים והפונקציות שהוא מגדיר הופכים לזמינים לכם. הוסיפו echo = TRUE כדי להדפיס גם כל שורה בזמן שהיא רצה.
איך מעבירים ארגומנטים לסקריפט R?
הריצו Rscript script.R value1 value2, ואז קראו אותם בתוך הסקריפט עם args <- commandArgs(trailingOnly = TRUE). החלק trailingOnly = TRUE מסיר את הארגומנטים הפנימיים של המפרש ומשאיר רק את שלכם. הכול מגיע כטקסט, אז המירו מספרים עם as.numeric().