วิธีซ่อมแซมใน r: ดัชนีอยู่นอกขอบเขต
ข้อผิดพลาดทั่วไปที่คุณอาจพบใน R คือ:
Error in x[, 4]: subscript out of bounds
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามเข้าถึงคอลัมน์หรือแถวของเมทริกซ์ที่ไม่มีอยู่
บทช่วยสอนนี้แสดงขั้นตอนที่แน่นอนที่คุณสามารถทำได้เพื่อแก้ไขข้อผิดพลาดนี้ โดยใช้เมทริกซ์ต่อไปนี้เป็นตัวอย่าง:
#make this example reproducible set. seeds (0) #create matrix with 10 rows and 3 columns x = matrix(data = sample. int (100, 30), nrow = 10, ncol = 3) #print matrix print (x) [,1] [,2] [,3] [1,] 14 51 96 [2,] 68 85 44 [3,] 39 21 33 [4,] 1 54 35 [5,] 34 74 70 [6,] 87 7 86 [7,] 43 73 42 [8,] 100 79 38 [9,] 82 37 20 [10,] 59 92 28
ตัวอย่าง #1: ดัชนีอยู่นอกช่วง (มีเส้น)
รหัสต่อไปนี้พยายามเข้าถึงแถวที่ 11 ของเมทริกซ์ซึ่งไม่มีอยู่:
#attempt to display 11th row of matrix
x[11, ]
Error in x[11, ]: subscript out of bounds
เนื่องจากไม่มีแถวที่ 11 ของเมทริกซ์ เราจึงได้รับข้อผิดพลาด ดัชนีอยู่นอกขอบเขต
หากเราไม่รู้ว่าเมทริกซ์มีกี่แถว เราสามารถใช้ฟังก์ชัน nrow() เพื่อค้นหาว่า:
#display number of rows in matrix
nrow(x)
[1] 10
เราจะเห็นว่าเมทริกซ์มีเพียง 10 แถวเท่านั้น ดังนั้นเราจึงใช้เฉพาะตัวเลขที่น้อยกว่าหรือเท่ากับ 10 ในการเข้าถึงแถวเท่านั้น
ตัวอย่างเช่น เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อแสดงแถวที่ 10 ของเมทริกซ์:
#display 10th row of matrix
x[10, ]
[1] 59 92 28
ตัวอย่าง #2: ดัชนีอยู่นอกช่วง (มีคอลัมน์)
รหัสต่อไปนี้พยายามเข้าถึงคอลัมน์ที่ 4 ของเมทริกซ์ซึ่งไม่มีอยู่:
#attempt to display 4th column of matrix
x[, 4]
Error in x[, 4]: subscript out of bounds
เนื่องจากไม่มีคอลัมน์ที่ 4 ของเมทริกซ์ เราจึงได้รับข้อผิดพลาด ดัชนีอยู่นอกขอบเขต
หากเราไม่ทราบว่าเมทริกซ์มีกี่คอลัมน์ เราสามารถใช้ฟังก์ชัน ncol() เพื่อค้นหา:
#display number of columns in matrix
ncol(x)
[1] 3
เราจะเห็นว่าเมทริกซ์มีเพียง 3 คอลัมน์เท่านั้น ดังนั้นเราจึงสามารถใช้ตัวเลขที่น้อยกว่าหรือเท่ากับ 3 เพื่อเข้าถึงคอลัมน์เท่านั้น
ตัวอย่างเช่น เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อแสดงคอลัมน์ที่ 3 ของเมทริกซ์:
#display 3rd column of matrix
x[, 3]
[1] 96 44 33 35 70 86 42 38 20 28
ตัวอย่าง #3: ดัชนีอยู่นอกช่วง (แถวและคอลัมน์)
รหัสต่อไปนี้พยายามเข้าถึงค่าของแถวที่ 11 และคอลัมน์ที่ 4 ของเมทริกซ์ ซึ่งไม่มีอยู่:
#attempt to display value in 11th row and 4th column
x[11, 4]
Error in x[11, 4]: subscript out of bounds
เนื่องจากไม่มีแถวที่ 11 หรือคอลัมน์ที่ 4 ของเมทริกซ์ เราจึงได้รับข้อผิดพลาด ดัชนีอยู่นอกขอบเขต
หากเราไม่ทราบว่ามีกี่แถวและคอลัมน์ในเมทริกซ์ เราสามารถใช้ฟังก์ชัน dim() เพื่อค้นหา:
#display number of rows and columns in matrix
dim(x)
[1] 10 3
เราจะเห็นว่าเมทริกซ์มีเพียง 10 แถวและ 3 คอลัมน์เท่านั้น ดังนั้นเราจึงสามารถใช้ตัวเลขที่น้อยกว่าหรือเท่ากับค่าเหล่านี้เท่านั้นเมื่อเข้าถึงแถวและคอลัมน์
ตัวอย่างเช่น เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อแสดงค่าในแถวที่ 10 และคอลัมน์ที่ 3 ของเมทริกซ์:
#display value in 10th row and 3rd column of matrix
x[10, 3]
[1] 28
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้อธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:
วิธีแก้ไขใน R: ชื่อไม่ตรงกับชื่อก่อนหน้า
วิธีแก้ไขใน R: ความยาวของวัตถุที่ยาวกว่าไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า
วิธีแก้ไขใน R: คอนทราสต์ใช้ได้กับปัจจัยที่มี 2 ระดับขึ้นไปเท่านั้น