วิธีแก้ไข: ความยาวของวัตถุที่ยาวขึ้นไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า
ข้อความเตือนทั่วไปที่คุณอาจพบใน 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 ระดับขึ้นไปเท่านั้น