วิธีสร้าง nested for loop ใน r (รวมถึงตัวอย่าง)


การวนซ้ำแบบซ้อน ช่วยให้คุณสามารถวนซ้ำองค์ประกอบในเวกเตอร์หลายตัว (หรือหลายมิติของเมทริกซ์) และดำเนินการบางอย่างได้

โครงสร้างพื้นฐานของ for loop ใน R คือ:

 for (i in 1:4) {
  print (i)
}

[1] 1
[1] 2
[1] 3
[1] 4

และโครงสร้างพื้นฐานของ การซ้อน for loop คือ:

 for (i in 1:4) {
  for (j in 1:2) {
    print (i*j)
  }
}

[1] 1
[1] 2
[1] 2
[1] 4
[1] 3
[1] 6
[1] 4
[1] 8

บทช่วยสอนนี้แสดงตัวอย่างบางส่วนของการสร้างการซ้อนสำหรับลูปใน R

ตัวอย่างที่ 1: Nested For loop ใน R

รหัสต่อไปนี้แสดงวิธีใช้ลูป for แบบซ้อนเพื่อเติมค่าของเมทริกซ์ 4×4:

 #create matrix
empty_mat <- matrix(nrow= 4 , ncol= 4 )

#view empty matrix
empty_mat
     [,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA

#use nested for loop to fill in values of matrix
for (i in 1:4) {
  for (j in 1:4) {
    empty_mat[i, j] = (i*j)
  }
}

#view matrix
empty_mat

     [,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 4 6 8
[3,] 3 6 9 12
[4,] 4 8 12 16

ตัวอย่างที่ 2: Nested For loop ใน R

รหัสต่อไปนี้แสดงวิธีใช้ for loop แบบซ้อนเพื่อยกกำลังสองแต่ละค่าในกรอบข้อมูล:

 #create empty data frame
df <- data.frame(var1=c(1, 7, 4),
                 var2=c(9, 13, 15))

#view empty data frame
df

  var1 var2
1 1 9
2 7 13
3 4 15

#use nested for loop to square each value in the data frame
for (i in 1:nrow(df)) {
  for (j in 1:ncol(df)) {
    df[i, j] = df[i, j]^2
  }
}

#view new data frame
df

  var1 var2
1 1 81
2 49 169
3 16 225

หมายเหตุเกี่ยวกับการวนซ้ำ

โดยทั่วไป การซ้อนสำหรับลูปจะทำงานได้ดีกับชุดข้อมูลหรือเมทริกซ์ขนาดเล็ก แต่มักจะค่อนข้างช้าเมื่อใช้ข้อมูลขนาดใหญ่

สำหรับข้อมูลขนาดใหญ่ ตระกูลฟังก์ชันของแอปพลิเคชัน มีแนวโน้มที่จะเร็วกว่ามากและแพ็คเกจ data.table มีฟังก์ชันในตัวมากมายที่ทำงานอย่างมีประสิทธิภาพกับชุดข้อมูลขนาดใหญ่

แหล่งข้อมูลเพิ่มเติม

วิธีวนซ้ำชื่อคอลัมน์ใน R
วิธีเพิ่มแถวใน data frame ใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *