У меня есть фрейм данных с тремя переменными:
df <- data.frame(
level = rep(c(2,2,1,1,0,0),3),
names = c(rep("name1",6),rep("name2",6),rep("name3",6)),
values = c(rnorm(6)-1, rnorm(6), rnorm(6)+1)
)
Теперь я хотел бы изобразить для каждого уровня в df$names распределение df$values по df$level в цикле for. Хотя этот цикл for создает желаемые коробчатые диаграммы, он рисует их все в одном кадре, а не, как ожидалось, бок о бок:
for(i in unique(df$names)){
par(new=T)
boxplot(df[df$names==i,]$values ~ df[df$names==i,]$level)
}
Как я могу изменить код, чтобы диаграммы для каждого df$names отображались рядом?
наверное это то, что вы хотите: boxplot(df$values ~ df$level+df$names)





Ты очень близко
par(mfrow=c(1,3))
for(i in unique(df$names)){
boxplot(df[df$names==i,]$values ~ df[df$names==i,]$level)
}
Хорошо, это полезно. В идеале коробчатые диаграммы должны быть в одном кадре. Как этого достичь?
См. Комментарий П. Пачиоретти к вашему исходному сообщению.
Может быть, использовать ggplot2 с фасетами вместо forloop?