You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何可视化吸烟大学生的年龄组分布?R代码参数长度报错求解

解决R语言年龄组与吸烟习惯可视化的报错问题

问题根源

你犯了两个关键错误:

  1. 误将barplot()的绘图参数(legend.text、beside)传入table()函数——table()仅负责生成频数交叉表,不识别这类绘图参数
  2. 调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:46:08