R语言barplot绘图报错‘height必须是向量或矩阵’问题问询
R barplot函数
height参数报错解决方案 报错根因
barplot.default()要求第一个输入参数height必须为向量或矩阵类型,而通过dplyr::select()生成的SurveyInfo属于tibble(数据框子类),不符合参数要求,因此触发报错。
解决方案
根据不同绘图需求,可选择对应处理方法:
- 需求1:绘制7个量表的平均得分柱状图
先计算各列汇总值,转换为向量后传入绘图函数:# 计算各列均值,自动移除缺失值 survey_col_means <- colMeans(SurveyInfo, na.rm = TRUE) barplot(survey_col_means, main="State Anxiety Pre-Experiment", xlab="量表名称", ylab="平均得分", beside=TRUE, col=rainbow(7)) - 需求2:绘制每个受试者的7个量表得分对比柱状图
先将数据框转换为矩阵,若需展示受试者ID,可将ID设为矩阵行名:# 数据框转矩阵 survey_mat <- as.matrix(SurveyInfo) # 绑定ID为行名作为横轴标签 rownames(survey_mat) <- SubjInfo$ID barplot(survey_mat, main="State Anxiety Pre-Experiment", xlab="受试者ID", ylab="得分", beside=TRUE, col=rainbow(7)) - 需求3:仅绘制单个量表的所有受试者得分柱状图
直接提取对应列转为向量传入即可:barplot(SurveyInfo$STAIY1_pre, main="State Anxiety Pre-Experiment", xlab="受试者ID", ylab="焦虑水平", col=rainbow(nrow(SurveyInfo)))
验证方法
运行class(SurveyInfo)可确认数据类型,若返回结果为data.frame或tbl_df/tbl/data.frame,则必须完成上述结构转换后再调用barplot()。
内容的提问来源于stack exchange,提问作者Emily Russell
相关产品推荐
相关产品推荐

