如何修复FUN(newx[, i], ...)中的错误:参数的'类型'(字符)无效

1,924 阅读1分钟

你在R中可能遇到的一个错误是:

Error in sum(x) : invalid 'type' (character) of argument

当你试图对一个字符向量进行一些数学运算(如取和、平均数、计数等)时,会出现这个错误。

本教程分享如何在实践中解决这个错误。

如何重现该错误

假设我们在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    A     10        7
2    A     12        8
3    A     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()**函数来计算'point'列中数值的总和:

#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    A     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)必须有一个正的长度
如何修复:选择未使用参数的错误