R语言绘制直方图提示'x must be numeric'错误的原因及解决方法
报错原因
hist() 函数的第一个入参必须是存储原始观测值的数值型向量,你直接传入了双列结构的数据框(属于列表类型对象,不是单维数值向量),触发了函数的参数类型校验逻辑;同时你当前使用的是预先汇总完成的「取值-频次」宽表,并非hist()默认适配的逐条原始观测数据,因此抛出该错误。
修复方案
根据你的数据形态,二选一即可:
- 方案1:还原原始观测向量后调用hist
用rep()函数按频次列重复对应的长度值,还原出和原始统计结果一致的观测值向量,再传入hist绘图即可,代码如下:
该方法生成的直方图和你用未汇总的原始长度数据绘制的结果完全一致。# 替换为你自己的数据框对象名 raw_obs <- rep(your_df$x, times = your_df$freq) hist(raw_obs) - 方案2:直接基于汇总频次绘制分布图
由于你的x列是1~50的离散长度取值,本身已经是固定分组,不需要hist做自动分箱,可以直接用barplot()绘制频次分布,更适配你的汇总数据结构:# 替换为你自己的数据框对象名 barplot( height = your_df$freq, names.arg = your_df$x, xlab = "长度值", ylab = "出现频次" )
内容的提问来源于stack exchange,提问作者timeywimey
相关产品推荐
相关产品推荐

