
תרגילים בנושא לולאות
תרגיל 1: צרי לולאה שרצה על כל המספרים מ1 עד 10 ומדפיסה כל מספר בריבוע (1,4,9,16 וכו’).
for (i in 1:10) {
print(i^2)
}
תרגיל 2: צרי לולאה שרצה על כל המספרים מ1 עד 100 ומדפיסה רק את המספרים שהם כפולה של 3 או כפולה של 7.
for (i in 1:100) {
if ((i %% 3 == 0 ) | (i %% 7 == 0)) {
print(i)
} }
תרגיל 3: צרי לולאה שרצה על כל המספרים מ1 עד 25 ומדפיסה את כל המספרים חוץ מ-8 ו23.
for (i in 1:25) {
if ((i != 8) & (i != 23)) {
print(i)
} }
תרגיל 4: צרי וקטור בשם num_to_skip
nums_to_skip <- c(3,6,8,22,32,33)
צרי לולאה שרצה על כל המספרים מ1 עד 40 ומדפיסה את המספרים שלא נמצאים בוקטור nums_to_skip. רמז - %in% :
3 %in% nums_to_skip # returns TRUE
5 %in% nums_to_skip # returns FALSE
<- c(3,6,8,22,32,33)
nums_to_skip for (i in 1:40) {
if ( ! (i %in% nums_to_skip)) {
print(i)
} }
תרגיל 5: צרי לולאה בשם samples שתרוץ 10000 פעמים. בכל ריצה של הלולאה, דגמי דגימה בגודל 70 מתוך התפלגות נורמלית עם תוחלת 80 וסטיית תקן 5 (בעזרת הפונקציה rnorm). הכניסי את הוקטור שחוזר מהדגימה לתוך משתנה בשם sample. צרי וקטור ריק בשם sample_means (מחוץ ללולאה) בכל ריצה של הלולאה הכניסי אליו את הממוצע של הדגימה, כך שבסוף הלולאה הוא יכיל 10000 ממוצעים.
<- c()
sample_means set.seed(32) # to make sure the results
# will be the same every time the code run.
for (i in 1:10000) {
<- rnorm(70, 80, 5)
sample <- mean(sample)
sample_means[i]
}#hist(sample_means, breaks = 100)
תרגיל 6: בגרף מוצגת היסטוגרפיה של הוקטור sample_means מהשאלה הקודמת, עם נתונים זהים: התפלגות נורמלית עם תוחלת 80 וסטיית תקן 5. דגימה בגודל 70 מתוך ההתפלגות הנורמלית בכל איטרציה של הלולאה. הלולאה רצה 10,000 פעמים. הגרף מתאר את התפלגות הדגימה של הממוצע. שימי לב שהיא מזכירה בצורתה התפלגות נורמלית. נסי לשחק עם הערכים השונים. מה קורה להתפלגות כש-n משתנה? מה קורה כשהתוחלת משתנה? כשסטיית התקן משתנה? כשהלולאה רצה פחות פעמים? (כלומר, וקטור הממוצעים יכיל פחות ערכים) מתחת לגרף מופיע הקוד כפי שהוא רץ “מאחורי הקלעים”
תרגיל 7: צרי לולאה שעוברת על כל המספרים בוקטור הבא:
numbers <- c(3,5,6,8,2,44,45,5)
ומדפיסה האם הם גדולים מ6.
<- c(3,5,6,8,2,44,45,5)
numbers for (number in numbers) {
print(number > 6)
}
<- c(3,5,6,8,2,44,45,5)
numbers for (number in numbers) {
if (number > 6) {
print(paste(number, 'is bigger than 6'))
}else {
print(paste(number, 'is not bigger than 6'))
} }