วิธีแก้ไขข้อผิดพลาดใน r: อาร์กิวเมนต์ที่ไม่เป็นไปตามข้อกำหนด


ข้อความแสดงข้อผิดพลาดที่คุณอาจพบเมื่อใช้ R คือ:

 Error in matrix2 %*% matrix1: non-conformable arguments

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามคูณเมทริกซ์สองตัว แต่จำนวน คอลัมน์ ในเมทริกซ์ด้านซ้ายไม่ตรงกับจำนวน แถว ในเมทริกซ์ด้านขวา

ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรามีเมทริกซ์สองตัวต่อไปนี้ใน R:

 #create first matrix
mat1 <- matrix(1:10, nrow= 5 ) 

mat1

     [,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10

#create second matrix
mat2 <- matrix(1:6, nrow= 2 )

mat2

     [,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6

ตอนนี้ สมมติว่าเราพยายามคูณเมทริกซ์ตัวที่สองด้วยเมทริกซ์ตัวแรก:

 #attempt to multiply second matrix by first matrix
mate2 %*% mate1

Error in mat2 %*% mat1: non-conformable arguments

เราได้รับข้อผิดพลาดเนื่องจากจำนวน คอลัมน์ (3) ในเมทริกซ์ด้านซ้ายไม่ตรงกับจำนวน แถว (5) ในเมทริกซ์ด้านขวา

วิธีการหลีกเลี่ยงข้อผิดพลาด

เพื่อหลีกเลี่ยงข้อผิดพลาด ของอาร์กิวเมนต์ที่ไม่สอดคล้อง คุณต้องคูณเมทริกซ์แรกด้วยเมทริกซ์ตัวที่สองแทน:

 multiply first matrix by second matrix
mate1 %*% mate2

     [,1] [,2] [,3]
[1,] 13 27 41
[2,] 16 34 52
[3,] 19 41 63
[4,] 22 48 74
[5,] 25 55 85

โปรดทราบว่าเราสามารถคูณเมทริกซ์ทั้งสองได้สำเร็จโดยไม่มีข้อผิดพลาด เนื่องจากจำนวน คอลัมน์ (2) ในเมทริกซ์ด้านซ้ายตรงกับจำนวน แถว (2) ในเมทริกซ์ด้านขวา

นอกจากนี้เรายังสามารถใช้ฟังก์ชัน dim() เพื่อแสดงจำนวนคอลัมน์และแถวในแต่ละเมทริกซ์:

 #view dimensions of first matrix
dim(mat1)

[1] 5 2

#view dimensions of second matrix
dim(mat2)

[1] 2 3

จากผลลัพธ์นี้เราจะเห็นได้ว่า:

  • เมทริกซ์แรกมี 5 แถว 2 คอลัมน์
  • เมทริกซ์ตัวที่ 2 มี 2 แถว 3 คอลัมน์

นี่แสดงให้เห็นอย่างชัดเจนว่าเราต้องใช้เมทริกซ์ตัวแรกทางซ้ายและเมทริกซ์ตัวที่สองทางด้านขวาเมื่อทำการคูณ เนื่องจากเมทริกซ์ตัวแรกมี 2 คอลัมน์และเมทริกซ์ตัวที่สองมี 2 แถว

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:

วิธีแก้ไขในอาร์กิวเมนต์ R: เกี่ยวข้องกับจำนวนบรรทัดที่แตกต่างกัน
วิธีแก้ไขใน R: ข้อผิดพลาดในการเลือกอาร์กิวเมนต์ที่ไม่ได้ใช้
วิธีการซ่อมแซมใน R: การเปลี่ยนมีความยาวเป็นศูนย์

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

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