如何可视化吸烟大学生的年龄组分布?R代码参数长度报错求解
解决R语言年龄组与吸烟习惯可视化的报错问题
问题根源
你犯了两个关键错误:
- 误将
barplot()的绘图参数(legend.text、beside)传入table()函数——table()仅负责生成频数交叉表,不识别这类绘图参数 - 调用
table()时写错变量名,使用了原始年龄列survey2$Age,而非你生成的分组列survey2$Age_Group
修正后的完整代码
# 生成年龄分组并直接添加到原数据框(无需额外创建survey2,更高效) survey$Age_Group <- cut(survey$Age, breaks = c(0, 20, 25, Inf), labels = c("0-20", "20-25", "25+")) # 单独生成年龄组与吸烟习惯的交叉频数表,方便核对数据 age_smoke_crosstab <- table(survey$Age_Group, survey$Smoke) # 调用barplot绘制分组条形图,将绘图参数放在正确位置 barplot(age_smoke_crosstab, beside = TRUE, # 分组并排显示,而非堆叠 legend.text = TRUE, # 显示图例 main = "不同年龄组的吸烟习惯分布", xlab = "年龄组", ylab = "学生人数", col = c("#66c2a5", "#fc8d62", "#8da0cb")) # 自定义颜色区分组
额外说明
- 直接在原
survey数据框添加列比用cbind创建survey2更稳妥,避免因列数不匹配出现隐性问题 - 先单独生成交叉表
age_smoke_crosstab,可以先打印查看(print(age_smoke_crosstab)),确认频数统计符合预期后再绘图 - 添加标题、坐标轴标签和自定义颜色,能让可视化结果更直观易读
内容的提问来源于stack exchange,提问作者Yan
相关产品推荐
相关产品推荐

