如何从数据框列表中高效地创建箱图?

时间:2015-09-06 15:12:50

标签: r

我有一些data.frame s:

# Sample data
a <- data.frame(c(1:10), c(11:20))
names(a) <- c("A", "B")
b <- data.frame(sqrt(1:200), sqrt(201:400))
names(b) <- c("A", "B")
c <- data.frame(log2(1:500), log2(501:1000))
names(c) <- c("A", "B")

我想boxplot超过所有data.frames(因此输出中应该有6个箱图)

我尝试了以下代码:

abc <- list(a, b, c)
names(abc) <- c("a", "b", "c")
boxplot(abc$a[[1]], abc$a[[2]], abc$b[[1]],abc$b[[2]],abc$c[[1]],abc$c[[2]])

它奏效了,但它真的很笨拙。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:3)

简短而甜蜜的回答肯定是@ hrbrmstr的评论。这是一个稍长的ggplot解决方案。

library(reshape2)   # for melt(...)
library(ggplot2)
df <- lapply(names(abc),function(x)cbind(name=x,abc[[x]]))
df <- melt(do.call(rbind,df),id="name")
ggplot(df, aes(x=variable, y=value)) + geom_boxplot() + facet_grid(~name)