วิธีแก้ไขใน 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: จำนวนมิติไม่ถูกต้อง

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

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