For-Loop ב-R DataFrame

For Loop B R Dataframe



for-loop הוא מבנה בקרה המאפשר לנו לחזור על קבוצת הוראות במספר מוגדר של פעמים. זוהי שיטה נפוצה לאיטרציה ב-R, במיוחד כאשר אנו צריכים לבצע את אותה פעולה באלמנטים מסוימים או לבצע איטרציה על פני מבנה נתונים כמו זה ב-DataFrame. שורות ועמודות מרכיבות את DataFrames ב-R כאשר כל שורה מייצגת תצפית בודדת וכל עמודה מציינת משתנה או היבט של אותה תצפית.

עם מאמר מסוים זה, אנו משתמשים ב-for-loop כדי לחזור על ה-DataFrame בגישות שונות. שים לב שהאיטרציה של for-loop על פני שורות ועמודות יכולה להיות מאוד חישובית עבור DataFrames גדולות.







דוגמה 1: שימוש בשורות For-Loop Over DataFrame ב-R

ניתן להשתמש ב-for-loop ב-R כדי לחזור על השורות של DataFrame. בתוך לולאת for, אנו יכולים להשתמש באינדקס השורות כדי לגשת לכל שורה של ה-DataFrame. בואו ניקח בחשבון את קוד ה-R הבא שהוא הדגמה של for-loop לחזרה על פני השורות של DataFrame שצוין.



data = data.frame(c1 = c(1:5),

c2 = c(6:10),

c3 = c(11:15))

for(i in 1:nrow(data)) {

שורה <- נתונים[i, ]

הדפס (שורה)

}

כאן, אנו מגדירים תחילה את הפונקציה data.frame() בתוך ה-'data'. הפונקציה data.frame() כאן מכילה שלוש עמודות. כל עמודה מוגדרת עם רצף של מספרים מ-1 עד 5, 6 עד 10 ו-11 עד 15, בהתאמה. לאחר מכן, נפרסת הפונקציה for-loop אשר חוזרת על פני השורות של ה-DataFrame 'data' באמצעות הפונקציה nrow() כדי לקבל את המספר הכולל של שורות. משתנה הלולאה, 'i', מקבל את הערכים לכל מספר השורות ב'נתונים'.



לאחר מכן, אנו מחלצים את השורה ה-i של 'נתונים' של DataFrame באמצעות סימון הסוגריים המרובעים '[ ]'. השורה שחולצה מאוחסנת במשתנה 'שורה' שיודפס על ידי הפונקציה print().





לפיכך, הלולאה חוזרת על כל השורות ב-DataFrame ומציגה את מספרי השורות בפלט יחד עם ערכי העמודה.



דוגמה 2: שימוש ב-For-Loop Over DataFrame Columns

באופן דומה, אנו יכולים להשתמש ב-for-loop ב-R כדי ללולאה מעל העמודות של מסגרת הנתונים שצוינה. אנחנו יכולים להשתמש בקוד הקודם כדי ללולאה מעל העמודות אבל אנחנו חייבים להשתמש בפונקציה ncol() ב-for-loop. לעומת זאת, יש לנו את הגישה הפשוטה ביותר ללולאה על העמודות של ה-DataFrame באמצעות for-loop. שקול את קוד R הבא בשביל זה:

df = data.frame(col1 = c(10, 20, 30, 40, 50),

col2 = c(11, 21, 31, 41, 51),

col3 = c(12, 22, 32, 42, 52))

for(col in colnames(df)) {

עמודה <- df[[col]]

הדפס (עמודה)

}

כאן, אנו יוצרים תחילה את המשתנה df שבו ה-data.frame() מופעל עם הכנסת העמודות. ה-'df' DataFrame מכיל שלוש עמודות המכילות ערכים מספריים. לאחר מכן, אנו משתמשים ב-for-loop כדי לחזור על שמות העמודות של DataFrame 'data' באמצעות הפונקציה colnames(). בכל איטרציה, משתנה הלולאה 'col' מקבל את השם של העמודה הנוכחית. העמודה שחולצה מאוחסנת לאחר מכן במשתנה חדש שהוא 'עמודה'.

לפיכך, הנתונים של המשתנה 'עמודה' מדפיסים את הפלט במסוף הבא:

דוגמה 3: שימוש ב-For-Loop על כל ה-DataFrame

בדוגמאות הקודמות, עברנו בלולאה על העמודות והשורות באמצעות for-loop, בהתאמה. כעת, אנו משתמשים בלולאות המקוננות כדי לחזור על השורות והעמודות של DataFrame, בו-זמנית. הקוד של R מסופק בהמשך כאשר נעשה שימוש ב-for-loop המקוננת מעל העמודות והשורות:

עובדים <- data.frame(id=1:4,

names=c('kim', 'John', 'Ian', 'Mark'),

location=c('Australia', 'America', 'Canada', 'Jordan'),

salary=c(2000, 1800, 1500, 1000))

for (שורה ב-1:nrow(עובדים)) {

for (col in 1:ncol(employees)) {

print(paste('Row index', row, 'colum name', col, 'cell value', workings[row, col]))

}

}

כאן, אנו מכריזים על המשתנה 'employees' שבו נקרא ה-data.frame() כדי להגדיר את העמודות. הערכים בכל עמודה מצוינים באמצעות וקטורים. לאחר מכן, עבור השורה והעמודה של DataFrame 'עובדים', אנו משתמשים בשתי for-loops מקוננות כדי לחזור על הנתונים. הלולאה החיצונית חוזרת על פני השורות של DataFrame שצוין באמצעות '1:nrow(עובדים)'. עבור כל שורה, '1:ncol(employees)' משמש בלולאה הפנימית כדי לחזור שוב ושוב על העמודות של ה-DataFrame.

לאחר מכן, יש לנו פונקציה print() בתוך הלולאות המקוננות אשר פורסת את הפונקציה paste() כדי לשרשר את אינדקס השורה, אינדקס העמודה וערך התא למחרוזת אחת. ביטוי העובד [שורה, קול] כאן מקבל את הערך בתא הנוכחי שבו שורה ועמודה הם מדדי השורה והעמודה הקיימים, בהתאמה.

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

דוגמה 4: שיטה אלטרנטיבית For-Loop ב-R

לולאת for מיושנת כעת בשפת R. עם זאת, הוא מספק כמה שיטות חלופיות שפועלות כמו ה-for-loop והן מהירות יותר מה-for-loops. השיטה היא מפונקציות 'החל משפחה' אשר פועלות עבור לולאה ברקע כדי לחזור על DataFrames. בואו ניקח בחשבון את קוד R הבא שבו הפונקציה sapply() משמשת ללולאה על ה-DataFrame.

dfX <- data.frame(var1=c(1:5),

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

sapply(dfX, sum)

כאן, אנו מקימים תחילה את DataFrame 'dfX' על ידי קריאה לפונקציה data.frame() עם שתי עמודות, שכל אחת מהן מכילה ערכים מספריים. לאחר מכן אנו מדפיסים את ה-'dfX' DataFrame המקורי לקונסולה. בשלב הבא, אנו משתמשים בפונקציה sapply() כדי לחזור על ה-DataFrame המסופק ולקבל את הסכום של כל עמודה. הפונקציה sapply() לוקחת את הארגומנטים 'x' ו-'FUN' באופן כללי. במקרה זה, X הוא ה-'dfX' DataFrame, ו-'FUN' הוא הפונקציה sum() המוחלת על כל אחת מהעמודות של ה-DataFrame.

התוצאה של האיטרציה המושגת באמצעות הפונקציה sapply() מושגת במסך הבא. התוצאות של פעולת הסכום של DataFrame מוצגות עבור כל עמודה. יתר על כן, אנו יכולים להשתמש גם בכמה פונקציות אחרות של 'משפחת החלים' עבור פעולת for-loop ב-R:

סיכום

אנו עובדים עם for-loops כדי לחזור על השורות או העמודות של ה-DataFrame כדי לבצע פעולה ספציפית. לולאת for משמשת בנפרד כדי לחזור על העמודות והשורות. יתר על כן, אנו משתמשים בזה לאיטרציה על שתי העמודות והשורות של מסגרת הנתונים בו-זמנית. לרוב, יישום פונקציות כדי להגיע לתוצאה הרצויה יעיל יותר. הדוגמה של פונקציית היישום ניתנת בדוגמה האחרונה על פעולת for-loop.