วิธีซ่อมแซมใน r: อาร์กิวเมนต์ที่ไม่ใช่ตัวเลขของตัวดำเนินการไบนารี


ข้อผิดพลาดที่คุณอาจพบใน R คือ:

 Error in df$var1- df$var2: non-numeric argument to binary operator 

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามดำเนิน การแบบไบนารี่ กับเวกเตอร์สองตัว และเวกเตอร์ตัวใดตัวหนึ่งไม่ใช่ตัวเลข

นี่คือตัวอย่างของการดำเนินการแบบไบนารี:

  • การลบ ( )
  • นอกจากนี้ ( + )
  • การคูณ ( * )
  • กอง ( / )

ข้อผิดพลาดนี้มักเกิดขึ้นเมื่อเวกเตอร์ตัวใดตัวหนึ่งที่คุณระบุเป็นเวกเตอร์อักขระ

บทช่วยสอนนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดนี้อย่างชัดเจน

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรามี data frame ต่อไปนี้ใน R:

 #create data frame
df <- data. frame (period = c(1, 2, 3, 4, 5, 6, 7, 8),
                 sales = c(14, 13, 10, 11, 19, 9, 8, 7),
                 returns = c('1', '0', '2', '1', '1', '2', '2', '3'))

#view data frame
df

  period sales returns
1 1 14 1
2 2 13 0
3 3 10 2
4 4 11 1
5 5 19 1
6 6 9 2
7 7 8 2
8 8 7 3

ตอนนี้ สมมติว่าเราพยายามสร้างคอลัมน์ใหม่ชื่อ “net” โดยลบคอลัมน์ “returns” ออกจากคอลัมน์ “sales”:

 #attempt to create new column called 'net'
df$net <- df$sales - df$returns

Error in df$sales * df$returns: non-numeric argument to binary operator

เกิดข้อผิดพลาดเนื่องจากคอลัมน์ “returns” อยู่ในคลาส “อักขระ” และไม่สามารถลบคอลัมน์อักขระออกจากคอลัมน์ตัวเลขได้

 #display class of 'sales' column
class(df$sales)

[1] "digital"

#display class of 'returns' column
class(df$returns)

[1] “character”

วิธีการแก้ไขข้อผิดพลาด

วิธีแก้ไขข้อผิดพลาดนี้คือการใช้ as.numeric() เพื่อแปลงคอลัมน์ “returns” เป็นตัวเลขก่อนดำเนินการลบ:

 #create new column called 'net'
df$net <- df$sales - as. numeric (df$returns)

#view updated data frame
df

  period sales returns net
1 1 14 1 13
2 2 13 0 13
3 3 10 2 8
4 4 11 1 10
5 5 19 1 18
6 6 9 2 7
7 7 8 2 6
8 8 7 3 4

เราสามารถทำการลบได้โดยไม่มีข้อผิดพลาดใดๆ เนื่องจากคอลัมน์ “ยอดขาย” และ “ผลตอบแทน” เป็นตัวเลข

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้อธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:

วิธีแก้ไขใน R: dim(X) ต้องมีความยาวเป็นบวก
วิธีแก้ไขใน R: ชื่อไม่ตรงกับชื่อก่อนหน้า
วิธีแก้ไขใน R: ความยาวของวัตถุที่ยาวกว่าไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า
วิธีแก้ไขใน R: คอนทราสต์ใช้ได้กับปัจจัยที่มี 2 ระดับขึ้นไปเท่านั้น

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

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