วิธีแก้ไขใน r: จำนวนดัชนีบนเมทริกซ์ไม่ถูกต้อง
ข้อผิดพลาดที่คุณอาจพบใน R คือ:
Error in x[i, ] <- 0: incorrect number of subscripts on matrix
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามกำหนดค่าให้กับตำแหน่งในเวกเตอร์ แต่ใส่ลูกน้ำโดยไม่ตั้งใจราวกับว่าคุณกำลังกำหนดค่าให้กับตำแหน่งแถวและคอลัมน์ในเมทริกซ์
บทช่วยสอนนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดนี้อย่างชัดเจน
ตัวอย่างที่ 1: แก้ไขข้อผิดพลาดสำหรับค่าเดียว
สมมติว่าเรามีเวกเตอร์ต่อไปนี้ใน R โดยมี 5 ค่า:
#definevector
x <- c(4, 6, 7, 7, 15)
ตอนนี้ สมมติว่าเราพยายามกำหนดค่า “22” ให้กับองค์ประกอบที่สามของเวกเตอร์:
#attempt to assign the value '22' to element in third position
x[3, ] <- 22
Error in x[3, ] <- 22: incorrect number of subscripts on matrix
เราได้รับข้อผิดพลาดเนื่องจากเราได้ใส่เครื่องหมายจุลภาคเมื่อพยายามกำหนดค่าใหม่
เราเพียงแค่ต้องลบคำสั่งแทน:
assign the value '22' to element in third position x[3] <- 22 #display updated vector x [1] 4 6 22 7 15
ตัวอย่างที่ 2: แก้ไขข้อผิดพลาดใน for loop
ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อพยายามแทนที่ค่าหลายค่าในเวกเตอร์โดยใช้ลูป ‘for’
ตัวอย่างเช่น โค้ดต่อไปนี้พยายามแทนที่แต่ละค่าในเวกเตอร์ด้วยศูนย์:
#definevector
x <- c(4, 6, 7, 7, 15)
#attempt to replace every value in vector with zero
for (i in 1:length(x)) {
x[i, ]=0
}
Error in x[i, ] = 0: incorrect number of subscripts on matrix
เราได้รับข้อผิดพลาดเนื่องจากเราได้ใส่เครื่องหมายจุลภาคเมื่อพยายามกำหนดค่าศูนย์
เราเพียงแค่ต้องลบคำสั่งแทน:
#definevector
x <- c(4, 6, 7, 7, 15)
#replace every value in vector with zero
for (i in 1:length(x)) {
x[i]=0
}
#view updated vector
x
[1] 0 0 0 0 0
เมื่อลบเครื่องหมายจุลภาคแล้ว โค้ดจะทำงานโดยไม่มีข้อผิดพลาด
แหล่งข้อมูลเพิ่มเติม
วิธีแก้ไขใน R: NAs ที่ถูกบังคับโดยการบังคับ
วิธีซ่อมแซมใน R: ดัชนีอยู่นอกขอบเขต
วิธีแก้ไขข้อผิดพลาดใน R: จำนวนมิติไม่ถูกต้อง