วิธีแก้ไขใน r: ข้อผิดพลาดใน aggregate.data.frame(): อาร์กิวเมนต์ต้องมีความยาวเท่ากัน
ข้อผิดพลาดที่คุณอาจพบใน R คือ:
Error in aggregate.data.frame(as.data.frame(x), ...): arguments must have same length
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามใช้ฟังก์ชัน Aggregate() เพื่อสรุปค่าในคอลัมน์อย่างน้อยหนึ่งคอลัมน์ของกรอบข้อมูลใน R แต่ไม่สามารถระบุชื่อของกรอบข้อมูลได้เมื่ออ้างอิงคอลัมน์
บทช่วยสอนนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดนี้อย่างชัดเจน
วิธีการทำซ้ำข้อผิดพลาด
สมมติว่าเรามี data frame ต่อไปนี้ใน R:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'),
points=c(5, 9, 12, 14, 14, 13, 10, 6, 15, 18))
#view data frame
df
team points
1 to 5
2 to 9
3 to 12
4 to 14
5 to 14
6 B 13
7 B 10
8 B 6
9 C 15
10 C 18
ตอนนี้ สมมติว่าเราพยายามใช้ฟังก์ชัน Aggregate() เพื่อคำนวณค่า คะแนน เฉลี่ย โดยจัดกลุ่มตาม team :
#attempt to calculate mean points value by team
aggregate(df$points, list(' team '), FUN=mean)
Error in aggregate.data.frame(as.data.frame(x), ...):
arguments must have same length
เราได้รับข้อผิดพลาดเนื่องจากเราไม่สามารถระบุชื่อบล็อกข้อมูลในอาร์กิวเมนต์ list()
วิธีการแก้ไขข้อผิดพลาด
วิธีแก้ไขข้อผิดพลาดนี้คือใช้ df$team แทนเพียง “team” ในอาร์กิวเมนต์ list() :
#calculate mean points value by team
aggregate(df$points, list(df$team), FUN=mean)
Group.1 x
1 A 10.800000
2 B 9.666667
3 C 16.500000
โปรดทราบว่าเราไม่ได้รับข้อผิดพลาดใดๆ ในครั้งนี้เนื่องจากเราระบุชื่อกรอบข้อมูลในอาร์กิวเมนต์ list()
โปรดทราบว่าหากคุณใช้ชื่อคอลัมน์หลายชื่อในอาร์กิวเมนต์ list() คุณจะต้องระบุชื่อกรอบข้อมูลสำหรับชื่อคอลัมน์แต่ละคอลัมน์ มิฉะนั้น คุณจะได้รับข้อผิดพลาด
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้อธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:
วิธีแก้ไขใน R: ชื่อไม่ตรงกับชื่อก่อนหน้า
วิธีแก้ไขใน R: ความยาวของวัตถุที่ยาวกว่าไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า
วิธีแก้ไขใน R: คอนทราสต์ใช้ได้กับปัจจัยที่มี 2 ระดับขึ้นไปเท่านั้น