วิธีแก้ไขใน 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 ระดับขึ้นไปเท่านั้น

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

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