Menu
Coddy logo textTech

שימוש ב־seq_along()

חלק מהיחידה יסודות במסלול ה-R של Coddy. שיעור 64 מתוך 78.

לפעמים צריך גם את הערך של האיבר וגם את המיקום שלו בווקטור. אף שמעבר ישיר על האיברים הוא נקי, הוא לא נותן לך גישה לאינדקס. הפונקציה seq_along() פותרת זאת על ידי יצירת רצף של אינדקסים לכל וקטור.

הפונקציה seq_along() מחזירה רצף מ-1 ועד לאורך המערך:

fruits <- c("apple", "banana", "cherry")
print(seq_along(fruits))

פלט:

[1] 1 2 3

על ידי מעבר בלולאה על האינדקסים האלה, אפשר לגשת גם למיקום וגם לערך:

fruits <- c("apple", "banana", "cherry")
for (i in seq_along(fruits)) {
  cat(i, ":", fruits[i], "\n")
}

פלט:

1 : apple 
2 : banana 
3 : cherry

הגישה הזאת שימושית במיוחד כשצריך לשנות איברים במיקומים מסוימים או להשוות בין איברים לשכניהם. שימוש ב-seq_along() בטוח יותר מ-1:length(vec), כי הוא מטפל נכון בווקטורים ריקים ומחזיר רצף ריק במקום 1:0.

challenge icon

אתגר

קל

תקבלו שורת קלט אחת המכילה מספרים המופרדים בפסיקים (למשל, 10,20,30,40,50).

השתמשו ב־seq_along() כדי לעבור על המערך עם האינדקסים:

  1. צרו מערך מתוך הקלט המופרד בפסיקים
  2. עברו על המערך באמצעות seq_along() כדי לקבל גם את האינדקס וגם את הערך
  3. עבור כל איבר, הדפיסו את האינדקס, את הערך ואת הסכום המצטבר עד לאותה נקודה (סכום כל האיברים מהמיקום 1 ועד למיקום הנוכחי)

השתמשו ב־cat() עם התבנית: Position X: VALUE (Running total: TOTAL) ואחריה ירידת שורה.

לדוגמה, אם הקלט הוא:

5,10,15,20

הפלט צריך להיות:

Position 1: 5 (Running total: 5)
Position 2: 10 (Running total: 15)
Position 3: 15 (Running total: 30)
Position 4: 20 (Running total: 50)

הסבר: במיקום 1, הערך הוא 5 והסכום המצטבר הוא 5. במיקום 2, הערך הוא 10 והסכום המצטבר הוא 5+10=15. במיקום 3, הערך הוא 15 והסכום המצטבר הוא 5+10+15=30, וכן הלאה.

רמז: השתמשו ב־sum(vector[1:i]) כדי לחשב את הסכום המצטבר עד למיקום i.

נסו בעצמכם

# קראו את הקלט
con <- file("stdin", "r")
input_line <- suppressWarnings(readLines(con, n = 1))
close(con)

# המירו מחרוזת המופרדת בפסיקים לווקטור מספרי
numbers <- as.numeric(strsplit(input_line, ",")[[1]])

# TODO: כתבו את הקוד שלכם למטה
# השתמשו ב-seq_along() כדי לעבור על הווקטור
# בכל מיקום, הדפיסו את האינדקס, הערך והסכום המצטבר
# השתמשו ב-cat() בפורמט: Position X: VALUE (Running total: TOTAL)\n
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר R אונליין