不成功的箱形图 "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))
甚至考虑面向对象的包装器 tapply
:by
(通常用于将数据帧拆分为 return 对象列表):
par(mfrow = c(3,2))
by(mydata, mydata$CLASS, FUN=function(df) boxplot(df$RATIO))
par(mfrow = c(1,1))
我有数据集 "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))
甚至考虑面向对象的包装器 tapply
:by
(通常用于将数据帧拆分为 return 对象列表):
par(mfrow = c(3,2))
by(mydata, mydata$CLASS, FUN=function(df) boxplot(df$RATIO))
par(mfrow = c(1,1))