วิธีแก้ไขในอาร์กิวเมนต์ r: ไม่ใช่ทั้งตัวเลขหรือตรรกะ: return na
คำเตือนที่คุณอาจพบใน R คือ:
Warning message: In mean.default(df): argument is not numeric or logical: returning NA
คำเตือนนี้เกิดขึ้นเมื่อพยายามหาค่าเฉลี่ยวัตถุใน R ที่ไม่ใช่ตัวเลขหรือตรรกะ
บทช่วยสอนนี้จะอธิบายวิธีจัดการกับคำเตือนนี้ในทางปฏิบัติอย่างชัดเจน
วิธีทำซ้ำคำเตือน
สมมติว่าเราสร้าง data frame ต่อไปนี้ใน R:
#create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
points=c(99, 90, 86, 88, 95),
assists=c(33, 28, 31, 39, 34),
rebounds=c(30, 28, 24, 24, 28))
#view data frame
df
team points assists rebounds
1 A 99 33 30
2 B 90 28 28
3 C 86 31 24
4 D 88 39 24
5 E 95 34 28
หากเราพยายามหาค่าเฉลี่ยของคอลัมน์ของอักขระ หรือหากเราพยายามหาค่าเฉลี่ยของกรอบข้อมูลทั้งหมด เราจะได้รับคำเตือน:
#attempt to calculate mean of character column
mean(df$team)
Warning message:
In mean.default(df$team): argument is not numeric or logical: returning NA
#attempt to calculate mean of entire data frame
mean(df)
Warning message:
In mean.default(df): argument is not numeric or logical: returning NA
ฟังก์ชัน Mean() รับเฉพาะเวกเตอร์ตัวเลขเป็นอาร์กิวเมนต์ ซึ่งเป็นสาเหตุที่เราได้รับคำเตือนในทั้งสองสถานการณ์
วิธีจัดการกับคำเตือน
วิธีจัดการกับคำเตือนนี้คือการใช้ฟังก์ชัน Mean() กับเวกเตอร์ตัวเลขเท่านั้น
ตัวอย่างเช่น เราสามารถคำนวณค่าเฉลี่ยของคอลัมน์คะแนนได้เนื่องจากเป็นตัวเลข:
#calculate mean of points column
mean(df$points)
[1] 91.6
หรือเราอาจใช้ฟังก์ชัน sapply() เพื่อคำนวณค่าเฉลี่ยของแต่ละคอลัมน์ในกรอบข้อมูล:
#calculate mean of every column in data frame
sapply(df, mean, 2)
team points assists rebounds
NA 90 33 28
Warning message:
In mean.default(X[[i]], ...):
argument is not numeric or logical: returning NA
เราสามารถคำนวณค่าเฉลี่ยของแต่ละคอลัมน์ตัวเลขได้ แต่ยังคงได้รับข้อความเตือนเนื่องจากเราพยายามคำนวณค่าเฉลี่ยของคอลัมน์อักขระ “ทีม”
เพื่อหลีกเลี่ยงคำเตือนนี้โดยสิ้นเชิง เราสามารถใช้ฟังก์ชัน sapply() กับคอลัมน์ตัวเลขสามคอลัมน์เท่านั้น:
#calculate mean of each numeric column
sapply(df[c(' points ', ' assists ', ' rebounds ')], mean, 2)
points assists rebounds
90 33 28
โปรดทราบว่าค่าเฉลี่ยของแต่ละคอลัมน์ตัวเลขจะแสดงสำเร็จ และเราไม่ได้รับข้อความเตือนใดๆ
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:
วิธีแก้ไข: เงื่อนไขมีความยาว > 1 และระบบจะใช้เฉพาะองค์ประกอบแรกเท่านั้น
วิธีแก้ไข: อาร์กิวเมนต์ที่ไม่ใช่ตัวเลขของตัวดำเนินการไบนารี
วิธีแก้ไข: dim(X) ต้องมีความยาวเป็นค่าบวก
วิธีแก้ไข: ข้อผิดพลาดในการเลือกอาร์กิวเมนต์ที่ไม่ได้ใช้