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