R语言如何通过for循环为每个分类变量绘制分组对比条形图
你代码中的错误如下:
- 存在悬空赋值语句,
NumVars =、CatVars =后没有赋值对象,会直接触发语法报错 MyCatTitles赋值语句结束后没有换行或加分号,直接拼接for循环,R无法识别语句边界- 取分类变量名的逻辑错误:
mycatvar[i]提取的是mycatvar的第i列子数据框,不是列名,应该改为colnames(mycatvar)[i],这是你图中标题、轴标签显示异常的核心原因 - 水平条形图的轴标签设置错误:开启
horiz=TRUE后,x轴对应频数、y轴对应分类变量值,你当前的xlab、ylab设置完全颠倒
修正后的完整代码如下:
# 保留需要的变量,删除冗余悬空赋值 nnumvar = Data[c(2,4,5,6,7,8)] MyTotTitles = c("titles..") mycatvar = Data[c(1,3)] GNames = c("Control", "Treatment") for (i in 1:ncol(mycatvar)){ # 提取当前分类变量的列名 current_var = colnames(mycatvar)[i] # 设置标题和轴标签 mytitle = paste(current_var,"按处理分组对比") myxlab = "样本量" myylab = current_var # 生成分类变量和分组的交叉频数表 GFREQS = table(mycatvar[,i], Data[,9]) # 绘制水平条形图 barplot(GFREQS, horiz=TRUE, col=c("red","blue"), names.arg= GNames, cex.names=2, main=mytitle, xlab=myxlab, ylab=myylab) }
运行上述代码即可为mycatvar中的2个变量,分别生成和处理组/对照组对比的条形图,标题和轴标签会自动匹配对应变量名。
内容的提问来源于stack exchange,提问作者brooke elsworth
相关产品推荐
相关产品推荐

