איטרציה על איברי וקטור
חלק מהיחידה יסודות במסלול ה-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התבנית הזאת שימושית כשצריך להחיל פעולות שונות בהתאם לערך של כל איבר, דבר שפעולות וקטוריות בלבד לא תמיד יכולות להתמודד איתו.
אתגר
קלתקבלו שתי שורות קלט:
- רשימת מספרים המופרדים בפסיקים (למשל,
12,5,18,3,25,8,14) - ערך סף (למשל,
10)
השתמשו בלולאת for כדי לעבור על איברי הווקטור:
- צרו וקטור מהמספרים המופרדים בפסיקים
- עברו על כל איבר בווקטור
- עבור כל איבר שגדול מערך הסף או שווה לו, הדפיסו את האיבר באמצעות
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()השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 2
אופרטורים לוגיים (AND, OR)אופרטורים לוגיים חלק 2 (NOT)חזרה – לוגיקה פשוטהלוגיקה וקטורית חלק 1לוגיקה וקטורית חלק 27מחשבון לחלוקת החשבון
הודעת פתיחהקבלת קלט מהמשתמש2משתנים וסוגי נתונים
סוג נתונים מספריסוג נתונים שלמיםסוג נתונים של תוויםסוג נתונים לוגיבדיקת סוגי נתוניםמוסכמות למתן שמותערכים חסרים: NAסיכום – יצירת משתנים8לולאות
לולאת forלולאת whileפקודת breakהמשך (continue)סיכום – עצרתיצירת רצפים (seq, :)לולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםחלוקת מספרים שלמים ומודולואופרטורי השמהחזרה – חשבון פשוטאופרטורי השוואה6קלט/פלט בסיסי
הדפסת פלטחתול כפלטפלט עם משתניםקריאת קלט באמצעות readline()יסודות המרת טיפוסיםחזרה – מחשבון גילחזרה – אמת או שקר9פונקציות
הכרזה על פונקציהארגומנטים של פונקציהערכי החזרהסיכום – פונקציית סיגמאסיכום – פונקציית אימותערכי ברירת מחדל לפרמטרים12איטרציה על רצפים
איטרציה על איברי וקטורשימוש ב־seq_along()איטרציה על תווים (strsplitפונקציות לעיבוד מחרוזותתרגלו בעצמכם: קומפיילר R אונליין