Belajar menggunakan for loop, while loop, break, dan next dalam R menggunakan employee dataset untuk simulasi kasus nyata di dunia kerja.
Setiap karyawan mendapat bonus berdasarkan performa mereka. Very Good = 20%, Good = 10%, Average = 5% dari gaji. Kita gunakan for loop dan if-else untuk menghitung bonus masing-masing karyawan.
for (i in 1:length(names)) { if (performance[i] == "Very Good") { bonus <- salaries[i] * 0.20 } else if (performance[i] == "Good") { bonus <- salaries[i] * 0.10 } else { bonus <- salaries[i] * 0.05 } cat("Name:", names[i], ", Bonus:", bonus, " ") }
Name: Bagas , Bonus: 500 Name: Joan , Bonus: 1400 Name: Alya , Bonus: 325 Name: Dwi , Bonus: 1000 Name: Nabil , Bonus: 2400
Menggunakan for loop untuk memeriksa setiap karyawan, lalu menampilkan hanya yang gajinya di atas 6.000. Ini adalah contoh filtering data secara manual menggunakan loop.
for (i in 1:length(names)) { if (salaries[i] > 6000) { cat("Name:", names[i], ", Salary:", salaries[i], " ") } }
Name: Joan , Salary: 7000 Name: Alya , Salary: 6500 Name: Dwi , Salary: 10000 Name: Nabil , Salary: 12000
while loop akan terus berjalan selama kondisi terpenuhi. Ketika posisi karyawan adalah Manager, loop berhenti menggunakan break. Berguna saat kita ingin mencari data tertentu lalu berhenti.
i <- 1 while (i <= length(names)) { cat("Name:", names[i], ", Position:", positions[i], " ") if (positions[i] == "Manager") { cat("(Stop here because", names[i], "is a Manager) ") break } i <- i + 1 }
Name: Bagas , Position: Staff Name: Joan , Position: Supervisor Name: Alya , Position: Staff Name: Dwi , Position: Manager (Stop here because Dwi is a Manager)
Loop berjalan dan menampilkan karyawan satu per satu. Begitu menemukan karyawan dengan gaji di atas 10.000, loop langsung berhenti menggunakan break sebelum menampilkan nama tersebut.
for (i in 1:length(names)) { if (salaries[i] > 10000) { cat("(Stopped because", names[i], "has a salary above 10,000) ") break } cat("Name:", names[i], ", Salary:", salaries[i], " ") }
Name: Bagas , Salary: 5000 Name: Joan , Salary: 7000 Name: Alya , Salary: 6500 Name: Dwi , Salary: 10000 (Stopped because Nabil has a salary above 10,000)
next di R berfungsi seperti continue di bahasa lain — melewati iterasi saat ini dan lanjut ke berikutnya. Di sini kita skip karyawan yang performanya Average.
for (i in 1:length(names)) { if (performance[i] == "Average") { cat("(", names[i], "is skipped because the performance is 'Average') ") next } cat("Name:", names[i], ", Performance:", performance[i], " ") }
Name: Bagas , Performance: Good Name: Joan , Performance: Very Good ( Alya is skipped because the performance is 'Average') Name: Dwi , Performance: Good Name: Nabil , Performance: Very Good