2015-09-06 14 views
2

我有一些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]]) 

它的工作,但它真的很笨拙。有沒有更好的方法來做到這一點?

+3

'do.call(箱線圖,列表(不公開(ABC,遞歸= FALSE)))' – hrbrmstr

+0

歡迎SO。 +1提供一個最小可重現的示例。 – jlhoward

回答

2

簡短而甜蜜的回答絕對是@ 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) 

相關問題