不成功的箱形图 "for" 循环使用 R 中的因子

Unsuccessful box plot "for" looping with factors in R

我有数据集 "mydata",其中包含

的因素 summary(mydata$CLASS) 的摘要
A1  A2  A3  A4  A5 
108 236 329 188 175

我正在尝试使用以下代码绘制五个箱线图:

par(mfrow = c(3,2))
for (i in mydata$CLASS) {
  boxplot(mydata$RATIO[which(mydata$CLASS == i)])
}
par(mfrow = c(1,1))

此代码生成的箱形图数量远远超过五个;至少有几十个。为什么会这样/我该如何避免?

如@Z.Lin 评论,您正在尝试对 CLASS 组进行 运行 boxplot,因此应该迭代通过其具有 unique(mydata$CLASS).

的独特价值

或者,考虑 tapply 旨在按因子或 tags 拆分矢量(因此,tagged apply) 到子集组和 运行 跨子集的函数:

par(mfrow = c(3,2))
tapply(mydata$RATIO, mydata$CLASS, FUN=boxplot)
par(mfrow = c(1,1))

甚至考虑面向对象的包装器 tapplyby(通常用于将数据帧拆分为 return 对象列表):

par(mfrow = c(3,2))
by(mydata, mydata$CLASS, FUN=function(df) boxplot(df$RATIO))
par(mfrow = c(1,1))