如何在 r 中修复:二元运算符的非数字参数


在 R 中您可能遇到的错误是:

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

当您尝试对两个向量执行二元运算并且其中一个向量不是数字时,会出现此错误。

以下是二元运算的示例:

  • 减法 ( )
  • 加法 ( + )
  • 乘法 ( * )
  • 分部 ( / )

当您提供的向量之一是字符向量时,最常发生此错误。

本教程准确解释了如何修复此错误。

如何重现错误

假设我们在 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”的新列:

 #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

发生错误的原因是“返回”列属于“字符”类,并且无法从数字列中减去字符列。

 #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 个或更多级别的因子

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注