for-loop เป็นโครงสร้างการควบคุมที่ช่วยให้เราสามารถทำซ้ำชุดคำสั่งในจำนวนครั้งที่กำหนด เป็นวิธีที่ใช้กันทั่วไปสำหรับการวนซ้ำใน R โดยเฉพาะอย่างยิ่งเมื่อเราจำเป็นต้องดำเนินการแบบเดียวกันในบางองค์ประกอบหรือวนซ้ำในโครงสร้างข้อมูล เช่น โครงสร้างข้อมูลใน DataFrame แถวและคอลัมน์ประกอบเป็น DataFrames ใน R โดยที่แต่ละแถวแสดงถึงการสังเกตเดียว และแต่ละคอลัมน์แสดงถึงตัวแปรหรือลักษณะของการสังเกตนั้น
สำหรับบทความนี้ เราใช้ for-loop เพื่อวนซ้ำกับ DataFrame ในแนวทางต่างๆ โปรดทราบว่าการวนซ้ำของ for-loop ในแถวและคอลัมน์สามารถคำนวณได้สูงสำหรับ DataFrames ขนาดใหญ่
ตัวอย่างที่ 1: การใช้ For-Loop บนแถว DataFrame ใน R
สามารถใช้ for-loop ใน R เพื่อวนซ้ำแถวของ DataFrame ภายใน for-loop เราสามารถใช้ดัชนีแถวเพื่อเข้าถึงแต่ละแถวของ DataFrame ลองพิจารณาโค้ด R ต่อไปนี้ซึ่งเป็นการสาธิต for-loop เพื่อวนซ้ำแถวของ DataFrame ที่ระบุ
ข้อมูล = data.frame(c1 = c(1:5),
c2 = ค(6:10),
c3 = ค(11:15))
สำหรับ (ฉันใน 1:nrow (ข้อมูล)) {
แถว <- data[i, ]
พิมพ์(แถว)
}
ในที่นี้ ขั้นแรกให้กำหนดฟังก์ชัน data.frame() ภายใน 'ข้อมูล' ฟังก์ชัน data.frame() ที่นี่มีสามคอลัมน์ แต่ละคอลัมน์ถูกกำหนดด้วยลำดับของตัวเลขตั้งแต่ 1 ถึง 5, 6 ถึง 10 และ 11 ถึง 15 ตามลำดับ หลังจากนั้น ฟังก์ชัน for-loop จะถูกปรับใช้ซึ่งจะวนซ้ำแถวของ 'ข้อมูล' ของ DataFrame โดยใช้ฟังก์ชัน nrow() เพื่อรับจำนวนแถวทั้งหมด ตัวแปรลูป “i” รับค่าเป็นจำนวนแถวทั้งหมดใน “ข้อมูล”
จากนั้น เราแยกแถวที่ i-th ของ DataFrame “ข้อมูล” โดยใช้เครื่องหมายวงเล็บเหลี่ยม “[ ]” แถวที่แยกออกมาจะถูกเก็บไว้ในตัวแปร 'แถว' ซึ่งจะถูกพิมพ์โดยฟังก์ชัน print()
ดังนั้น การวนซ้ำจะวนซ้ำแถวทั้งหมดใน DataFrame และแสดงหมายเลขแถวในเอาต์พุตพร้อมกับค่าของคอลัมน์
ตัวอย่างที่ 2: การใช้ For-Loop บนคอลัมน์ DataFrame
ในทำนองเดียวกัน เราสามารถใช้ for-loop ใน R เพื่อวนซ้ำคอลัมน์ของ dataframe ที่ระบุ เราสามารถใช้โค้ดก่อนหน้าวนซ้ำคอลัมน์ได้ แต่เราต้องใช้ฟังก์ชัน ncol() ใน for-loop ในทางกลับกัน เรามีวิธีที่ง่ายที่สุดในการวนซ้ำคอลัมน์ของ DataFrame โดยใช้ for-loop พิจารณารหัส R ต่อไปนี้สำหรับสิ่งนี้:
df = data.frame(col1 = c(10, 20, 30, 40, 50),col2 = ค(11, 21, 31, 41, 51),
col3 = ค(12, 22, 32, 42, 52))
สำหรับ (col ใน colnames (df)) {
คอลัมน์ <- df[[col]]
พิมพ์ (คอลัมน์)
}
ในขั้นแรก เราสร้างตัวแปร df โดยที่ data.frame() ถูกใช้กับการแทรกคอลัมน์ DataFrame “df” มีสามคอลัมน์ที่มีค่าตัวเลข ต่อไป เราใช้ for-loop เพื่อวนซ้ำชื่อคอลัมน์ของ DataFrame “data” โดยใช้ฟังก์ชัน colnames() ในการวนซ้ำแต่ละครั้ง ตัวแปรลูป 'col' จะใช้ชื่อของคอลัมน์ปัจจุบัน คอลัมน์ที่แยกแล้วจะถูกเก็บไว้ในตัวแปรใหม่ซึ่งเรียกว่า 'คอลัมน์'
ดังนั้น ข้อมูลของตัวแปร 'คอลัมน์' จึงพิมพ์เอาต์พุตบนคอนโซลต่อไปนี้:
ตัวอย่างที่ 3: การใช้ For-Loop บน DataFrame ทั้งหมด
ในตัวอย่างก่อนหน้านี้ เราวนลูปเหนือคอลัมน์และแถวโดยใช้ for-loop ตามลำดับ ตอนนี้เราใช้การวนซ้ำที่ซ้อนกันเพื่อวนซ้ำทั้งแถวและคอลัมน์ของ DataFrame พร้อมกัน รหัสของ R มีให้ในต่อไปนี้ซึ่งใช้ for-loop ที่ซ้อนกันเหนือคอลัมน์และแถว:
พนักงาน <- data.frame(id=1:4,name=c('คิม', 'จอห์น', 'เอียน', 'มาร์ค'),
location=c('ออสเตรเลีย' 'อเมริกา' 'แคนาดา' 'จอร์แดน'),
เงินเดือน=c(2000, 1800, 1500, 1,000))
สำหรับ (แถวใน 1:nrow(พนักงาน)) {
สำหรับ (col ใน 1:ncol(พนักงาน)) {
พิมพ์ (วาง ('ดัชนีแถว', แถว, 'ชื่อคอลัมน์', col, 'ค่าเซลล์', พนักงาน [แถว, col]))
}
}
ที่นี่ เราประกาศตัวแปร “พนักงาน” โดยเรียกใช้ data.frame() เพื่อตั้งค่าคอลัมน์ ค่าในแต่ละคอลัมน์ระบุโดยใช้เวกเตอร์ จากนั้นสำหรับแถวและคอลัมน์ของ DataFrame “พนักงาน” เราใช้ for-loop ที่ซ้อนกันสองวงเพื่อวนซ้ำข้อมูล การวนซ้ำรอบนอกจะวนซ้ำแถวของ DataFrame ที่ระบุโดยใช้ “1:nrow(employees)” สำหรับแต่ละแถว จะใช้ “1:ncol(พนักงาน)” ในวงในเพื่อวนซ้ำๆ ในคอลัมน์ของ DataFrame
หลังจากนั้น เรามีฟังก์ชัน print() ภายในลูปที่ซ้อนกัน ซึ่งใช้ฟังก์ชัน paste() เพื่อเชื่อมดัชนีแถว ดัชนีคอลัมน์ และค่าเซลล์ให้เป็นสตริงเดียว นิพจน์พนักงาน [row, col] ที่นี่รับค่าในเซลล์ปัจจุบันโดยที่แถวและคอลัมน์คือดัชนีแถวและคอลัมน์ที่มีอยู่ตามลำดับ
ดังนั้น เอาต์พุตบนคอนโซลจึงถูกดึงข้อมูลด้วยดัชนีแถว ดัชนีคอลัมน์ และค่าเซลล์ที่ต่อกันเป็นสตริงเดียว
ตัวอย่างที่ 4: For-Loop Alternative Method ใน R
for loop ล้าสมัยในภาษา R แล้ว อย่างไรก็ตาม มันมีวิธีทางเลือกบางอย่างที่ทำงานเหมือนกับ for-loop และเร็วกว่า for-loop เมธอดนี้มาจากฟังก์ชัน “apply family” ซึ่งเรียกใช้ for-loop ในพื้นหลังเพื่อวนซ้ำผ่าน DataFrames ลองพิจารณาโค้ด R ต่อไปนี้ซึ่งใช้ฟังก์ชัน sapply() เพื่อวนซ้ำ DataFrame
dfX <- data.frame(var1=c(1:5),var2=c(6:10),
var3=c(11:15),
var4=ค(16:20))
เดเอฟเอ็กซ์
จัดหา (dfX, ผลรวม)
ในขั้นแรก เราสร้าง DataFrame “dfX” โดยการเรียกฟังก์ชัน data.frame() ที่มีสองคอลัมน์ แต่ละคอลัมน์มีค่าตัวเลข จากนั้นเราจะพิมพ์ DataFrame “dfX” ต้นฉบับไปยังคอนโซล ในขั้นตอนถัดไป เราใช้ฟังก์ชัน sapply() เพื่อวนซ้ำ DataFrame ที่ให้มาและรับผลรวมของแต่ละคอลัมน์ ฟังก์ชัน sapply() รับอาร์กิวเมนต์ 'x' และ 'FUN' โดยทั่วไป ในกรณีนี้ X คือ DataFrame “dfX” และ “FUN” คือฟังก์ชัน sum() ที่นำไปใช้กับแต่ละคอลัมน์ของ DataFrame
ผลลัพธ์ของการวนซ้ำซึ่งทำได้ผ่านฟังก์ชัน sapply() ทำได้ในหน้าจอต่อไปนี้ ผลลัพธ์ของการดำเนินการผลรวมของ DataFrame จะแสดงสำหรับแต่ละคอลัมน์ นอกจากนี้ เรายังสามารถใช้ฟังก์ชันอื่นๆ ของ “apply family” สำหรับการดำเนินการ for-loop ใน R:
บทสรุป
เราทำงานร่วมกับ for-loop เพื่อวนซ้ำแถวหรือคอลัมน์ของ DataFrame เพื่อดำเนินการบางอย่าง for-loop ใช้ทีละรายการเพื่อวนซ้ำในคอลัมน์และแถว นอกจากนี้ เราใช้สิ่งนี้เพื่อวนซ้ำทั้งคอลัมน์และแถวของดาต้าเฟรมพร้อมกัน ส่วนใหญ่แล้ว การใช้ฟังก์ชันเพื่อให้ได้ผลลัพธ์ที่ต้องการจะมีประสิทธิภาพมากกว่า ตัวอย่างของฟังก์ชันนำไปใช้มีให้ในตัวอย่างสุดท้ายสำหรับการดำเนินการวนรอบ