วิธีแก้ไข: จำนวนแถวในผลลัพธ์ไม่ใช่ผลคูณของความยาวเวกเตอร์ (arg 1)
ข้อความเตือนที่คุณอาจพบเมื่อใช้ R คือ:
Warning message: In cbind(A, B, C): number of rows of result is not a multiple of vector length (arg 1)
โดยทั่วไปคำเตือนนี้จะเกิดขึ้นเมื่อคุณพยายามใช้ฟังก์ชัน cbind() เพื่อผูกคอลัมน์เข้าด้วยกันของเวกเตอร์ที่มีความยาวต่างกัน
โปรดทราบว่าข้อความนี้เป็นเพียง คำเตือน และโค้ดของคุณจะยังคงทำงานต่อไป แต่ผลลัพธ์ที่คุณได้รับอาจแตกต่างไปจากที่คุณคาดไว้
ตัวอย่างต่อไปนี้แสดงวิธีหลีกเลี่ยงคำเตือนนี้ในทางปฏิบัติ
วิธีทำซ้ำคำเตือน
สมมติว่าเราใช้ฟังก์ชัน cbind() เพื่อผูกเวกเตอร์สามตัวเข้าด้วยกันเป็นคอลัมน์ในกรอบข้อมูล:
#define three vectors with different lengths
A = c(4, 2, 3, 6)
B = c(9, 1, 8, 7, 0, 7)
C = c(3, 5, 3, 3, 6, 4)
#column bind three vectors into data frame
df <- cbind(A, B, C)
#view data frame
df
Warning message:
In cbind(A, B, C):
number of rows of result is not a multiple of vector length (arg 1)
ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] 4 0 6
[6,] 2 7 4
ฟังก์ชัน cbind ใช้งานได้กับเวกเตอร์ทั้งสามตัว แต่โปรดทราบว่าค่าของเวกเตอร์แรกเพียงทำซ้ำซ้ำไปซ้ำมา
สิ่งนี้เรียกว่า “การรีไซเคิล” ใน R.
วิธีหลีกเลี่ยงคำเตือน
เพื่อหลีกเลี่ยงคำเตือนนี้โดยสิ้นเชิง เราต้องแน่ใจว่าเวกเตอร์แต่ละตัวที่เราใช้มีความยาวเท่ากัน
วิธีหนึ่งในการบรรลุเป้าหมายนี้คือการเติมค่าที่หายไปในเวกเตอร์ที่สั้นที่สุดด้วยค่า NA ดังต่อไปนี้:
#calculate max length of vectors
max_length <- max(length(A), length(B), length(C))
#set length of each vector equal to max length
length(A) <- max_length
length(B) <- max_length
length(C) <- max_length
#cbind the three vectors together into a data frame
df <- cbind(A, B, C)
#view data frame
df
ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] NA 0 6
[6,] NA 7 4
โปรดทราบว่าเราไม่ได้รับข้อความเตือนใดๆ ในครั้งนี้ และค่าเวกเตอร์แบบสั้นจะเสริมด้วยค่า NA เพื่อให้แน่ใจว่าเวกเตอร์ทั้งสามตัวที่เราใช้มีความยาวเท่ากัน
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:
วิธีแก้ไขในอาร์กิวเมนต์ R: เกี่ยวข้องกับจำนวนบรรทัดที่แตกต่างกัน
วิธีแก้ไขใน R: ข้อผิดพลาดในการเลือกอาร์กิวเมนต์ที่ไม่ได้ใช้
วิธีการซ่อมแซมใน R: การเปลี่ยนมีความยาวเป็นศูนย์