Menu
Coddy logo textTech

איטרציה על איברי וקטור

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

למרות שהפעולות הווקטוריות של R עוצמתיות, לפעמים צריך לעבד כל איבר בנפרד באמצעות לוגיקה מותאמת אישית. לולאת for מאפשרת לך לעבור על איברי המערך אחד בכל פעם.

הדרך הפשוטה ביותר לעבור בלולאה על פני וקטור היא לבצע איטרציה ישירות על האיברים שלו:

fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
  print(fruit)
}

פלט:

[1] "apple"
[1] "banana"
[1] "cherry"

בכל איטרציה, משתנה הלולאה fruit מקבל את הערך של האיבר הבא בווקטור. הגישה הזאת נקייה וקריאה כשצריך רק את הערכים עצמם.

אפשר לשלב איטרציה עם לוגיקה מותנית כדי לעבד איברים באופן סלקטיבי:

numbers <- c(3, 8, 2, 10, 5)
for (num in numbers) {
  if (num > 5) {
    print(num)
  }
}

פלט:

[1] 8
[1] 10

התבנית הזאת שימושית כשצריך להחיל פעולות שונות בהתאם לערך של כל איבר, דבר שפעולות וקטוריות בלבד לא תמיד יכולות להתמודד איתו.

challenge icon

אתגר

קל

תקבלו שתי שורות קלט:

  1. רשימת מספרים המופרדים בפסיקים (למשל, 12,5,18,3,25,8,14)
  2. ערך סף (למשל, 10)

השתמשו בלולאת for כדי לעבור על איברי הווקטור:

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

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

4,15,8,22,6,19,11
10

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

[1] 15
[1] 22
[1] 19
[1] 11

הסבר: הלולאה בודקת כל איבר מול ערך הסף (10). האיברים 15, 22, 19 ו-11 כולם גדולים מערך הסף או שווים לו, ולכן הם מודפסים. האיברים 4, 8 ו-6 מדולגים.

נסו בעצמכם

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

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

# TODO: כתבו את הקוד שלכם למטה
# השתמשו בלולאת for כדי לעבור על הווקטור numbers
# עבור כל איבר שמקיים >= threshold, הדפיסו אותו באמצעות print()
quiz iconבחנו את עצמכם

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

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

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