在R语言中使用aggregate求和整数时出现无效字符类型错误求助
问题解决:aggregate函数求和报错的原因及修正
错误原因
你执行aggregate(penalty, list(number = penalty$n), FUN = sum)时出错,是因为你把整个penalty数据框传给了aggregate的第一个参数。这个数据框里包含字符类型的win_conditions列,sum()函数无法对字符型数据执行求和操作——尽管n列是整数,但aggregate会尝试对数据框的每一列应用sum,这就触发了类型错误。
正确的解决方法
方法1:直接求和(最简单)
如果只是想对n列的所有数值求和,不需要用aggregate,直接调用sum()即可:
sum(penalty$n)
方法2:正确使用aggregate
如果一定要用aggregate,需要明确指定只对n列进行操作:
# 按win_conditions分组求和(保留分组信息) aggregate(n ~ win_conditions, data = penalty, FUN = sum) # 仅对n列整体求和 aggregate(penalty$n, FUN = sum)
方法3:使用tidyverse风格的语法(推荐)
既然你已经加载了tidyverse,用dplyr的summarize会更符合你的代码风格:
penalty %>% summarize(total_n = sum(n))
内容的提问来源于stack exchange,提问作者Jay Bee
相关产品推荐
相关产品推荐

