如何修复:fun(newx[, i], …) 中的错误:参数类型 '(字符)
在 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 to 10 7
2 to 12 8
3 to 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()函数来计算“points”列中值的总和:
#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 to 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) 必须具有正长度
如何修复:选择未使用的参数时出错