วิธีแก้ไข: ข้อผิดพลาดใน fun(newx[, i], …): ประเภทอาร์กิวเมนต์ ' (อักขระ)
ข้อผิดพลาดที่คุณอาจพบใน R คือ:
Error in sum(x): invalid 'type' (character) of argument
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามดำเนินการทางคณิตศาสตร์ (เช่น การหาผลรวม ค่าเฉลี่ย ตัวเลข ฯลฯ) บนเวกเตอร์อักขระ
บทช่วยสอนนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ
วิธีการทำซ้ำข้อผิดพลาด
สมมติว่าเราสร้าง data frame ต่อไปนี้ใน R:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
points=c(10, 12, 15, 20, 26, 25),
rebounds=c(7, 8, 8, 14, 10, 12))
#view data frame
df
team points rebounds
1 to 10 7
2 to 12 8
3 to 15 8
4 B 20 14
5 B 26 10
6 B 25 12
ตอนนี้ สมมติว่าเราพยายามคำนวณผลรวมของคอลัมน์ “ทีม”:
#attempt to calculate sum of values in 'team' column
sum(df$team)
Error in sum(df$team): invalid 'type' (character) of argument
เราได้รับข้อผิดพลาดเนื่องจากคอลัมน์ “ทีม” เป็นคอลัมน์อักขระ
เราสามารถยืนยันสิ่งนี้ได้โดยใช้ฟังก์ชัน class() :
#view class of 'team' column
class(df$team)
[1] “character”
วิธีการแก้ไขข้อผิดพลาด
วิธีแก้ไขข้อผิดพลาดนี้คือใช้เฉพาะการดำเนินการทางคณิตศาสตร์กับเวกเตอร์ตัวเลขเท่านั้น
ตัวอย่างเช่น เราสามารถใช้ฟังก์ชัน sum() เพื่อคำนวณผลรวมของค่าในคอลัมน์ ‘points’:
#calculate sum of values in 'points' column
sum(df$points)
[1] 108
นอกจากนี้เรายังสามารถคำนวณผลรวมของค่าคะแนนโดยจัดกลุ่มตามทีม:
#calculate sum of points, grouped by team
aggregate(points ~ team, df, sum)
team points
1 to 37
2 B 71
เรายังคำนวณผลรวมของคะแนน และ ค่ารีบาวด์ โดยจัดกลุ่มตามทีมได้:
#calculate sum of points and sum of rebounds, grouped by team
aggregate(.~team, df, sum)
team points rebounds
1 A 37 23
2 B 71 36
โปรดทราบว่าเราไม่ได้รับข้อผิดพลาดในการดำเนินการใดๆ เหล่านี้ เนื่องจากเราเพียงพยายามคำนวณผลรวมของตัวแปรตัวเลขเท่านั้น
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:
วิธีแก้ไข: เงื่อนไขมีความยาว > 1 และระบบจะใช้เฉพาะองค์ประกอบแรกเท่านั้น
วิธีแก้ไข: อาร์กิวเมนต์ที่ไม่ใช่ตัวเลขของตัวดำเนินการไบนารี
วิธีแก้ไข: dim(X) ต้องมีความยาวเป็นค่าบวก
วิธีแก้ไข: ข้อผิดพลาดในการเลือกอาร์กิวเมนต์ที่ไม่ได้ใช้