R语言plot()函数报错求助:plot.window()需有限ylim值
问题分析与解决办法
错误原因
surveys$sex是字符型向量,包含"M"、空字符串""等非数值内容。plot()函数默认会尝试将字符向量转换为数值型来绘图,非数值的内容会被强制转为NA,这就是警告"NAs introduced by coercion"的来源。- 当转换后有效数值极少(甚至没有),计算y轴范围的
min()和max()函数找不到非缺失值,就会返回Inf和-Inf,导致plot.window()无法设置有限的y轴范围,最终抛出错误。
解决办法
因为sex是分类变量,应该用适合分类变量的绘图方式:
- 统计频数后绘图
先用table()统计不同性别的数量,再传入plot()生成条形图:plot(table(surveys$sex)) - 转换为因子类型绘图
将字符型的sex转换为因子,plot()会自动识别为分类变量并生成条形图:plot(factor(surveys$sex)) - 先清理空字符串(推荐)
数据里的空字符串""其实属于缺失值,先将其替换为NA,再处理:# 替换空字符串为NA surveys$sex[surveys$sex == ""] <- NA # 绘图(保留NA类别) plot(factor(surveys$sex, exclude = NULL)) # 或者去掉NA类别 plot(droplevels(factor(surveys$sex)))
内容的提问来源于stack exchange,提问作者ameture
相关产品推荐
相关产品推荐

