วิธีแก้ไข: ความยาวของวัตถุที่ยาวขึ้นไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า


ข้อความเตือนทั่วไปที่คุณอาจพบใน R คือ:

 Warning message:
In a + b: longer object length is not a multiple of shorter object length

ข้อความเตือนนี้จะปรากฏขึ้นเมื่อคุณพยายามดำเนินการกับเวกเตอร์ตั้งแต่สองตัวขึ้นไปที่มีความยาวไม่เท่ากัน

บทช่วยสอนนี้จะแชร์ขั้นตอนที่คุณสามารถใช้เพื่อแก้ไขข้อความเตือนนี้

วิธีทำซ้ำข้อความเตือน

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

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9, 10)

#add the two vectors
a+b

[1] 7 9 11 13 15

เวกเตอร์ที่ได้จะแสดงผลรวมของค่าที่สอดคล้องกันในแต่ละเวกเตอร์

เราไม่ได้รับข้อความเตือนใดๆ เนื่องจากเวกเตอร์ทั้งสองมีความยาวเท่ากัน

อย่างไรก็ตาม สมมติว่าเวกเตอร์ที่สองมีค่าน้อยกว่าเวกเตอร์แรกหนึ่งค่า:

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9)

#add the two vectors
a+b

[1] 7 9 11 13 11

Warning message:
In a + b: longer object length is not a multiple of shorter object length

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

สิ่งสำคัญคือต้องทราบว่า R บังคับให้การคำนวณทำงานเสมอโดยบวกค่าสุดท้ายของเวกเตอร์แรก (5) กับค่าแรกของเวกเตอร์ที่สอง (6) เพื่อให้ได้ค่าสุดท้ายเป็น 11

หากเราไม่ทราบความยาวของเวกเตอร์แต่ละตัว เราสามารถใช้ฟังก์ชัน length() เพื่อค้นหา:

 #display length of vector a
length(a)

[1] 5

#display length of vector b
length(b)

[1] 4

เราจะเห็นว่าเวกเตอร์แรกมี 5 ค่าในขณะที่เวกเตอร์ที่สองมีเพียง 4 ค่าเท่านั้น นี่คือสาเหตุที่เราได้รับข้อความเตือน

วิธีแก้ไขข้อความแจ้งเตือน

เพื่อแก้ไขข้อความเตือนนี้ เราเพียงแค่ต้องแน่ใจว่าเวกเตอร์ทั้งสองมีความยาวเท่ากัน

ตัวอย่างเช่น หากเรารู้ว่าเวกเตอร์ ba มีค่าน้อยกว่าเวกเตอร์ a หนึ่งค่า เราก็สามารถบวกศูนย์ที่ส่วนท้ายของเวกเตอร์ b :

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9)

#add zero to the end of vector b
b <- c(b, 0)

#add the two vectors
a+b

[1] 7 9 11 13 5

ในกรณีส่วนใหญ่ เราไม่ทราบถึงความแตกต่างในความยาวระหว่างเวกเตอร์ทั้งสอง ดังนั้นเราจึงสามารถใช้คำสั่ง for loop ต่อไปนี้เพื่อเพิ่มจำนวนศูนย์ที่ถูกต้องที่ส่วนท้ายของเวกเตอร์ที่สั้นกว่า:

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7)

#add zeros to the end of vector b
for (i in (( length (b)+1): length (a)))
  +{b = c(b, 0)}

#add the two vectors
a+b

[1] 7 9 11 13 5

ข้อความเตือนหายไปเนื่องจากเราเพิ่มศูนย์ที่ส่วนท้ายของเวกเตอร์ b มากพอเพื่อให้แน่ใจว่าเวกเตอร์ทั้งสองมีความยาวเท่ากัน

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

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

วิธีแก้ไขใน R: ชื่อไม่ตรงกับชื่อก่อนหน้า
วิธีแก้ไขใน R: NAs ที่ถูกบังคับโดยการบังคับ
วิธีซ่อมแซมใน R: ดัชนีอยู่นอกขอบเขต
วิธีแก้ไขใน R: คอนทราสต์ใช้ได้กับปัจจัยที่มี 2 ระดับขึ้นไปเท่านั้น

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

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