【发布时间】:2016-01-22 00:32:35
【问题描述】:
我想从一个大数据框中生成数百个连续数据的箱线图,按“年份”因子分层。我首先从包含每个因变量和年份的原始数据框中创建一个列表。
这是一个看起来像我的示例数据集:
l<-list(data.frame(year=c(rep("2010",10),rep("2011",10),rep("2012",10)),
var1=sample(1:100,30,replace=T)),
data.frame(year=c(rep("2010",10),rep("2011",10),rep("2012",10)),
var2=sample(100:200,30,replace=T)),
data.frame(year=c(rep("2010",10),rep("2011",10),rep("2012",10)),
var3=sample(25:50,30, replace=T)))
下一步是在列表上应用 ggplot2 函数。这些函数都不会产生图:
lapply(l, function (j) ggplot(j, aes(x=year, y=j[,2], fill=year)) +
geom_boxplot() + ylab(names(j[2])) )
lapply(l, function (j) ggplot(j, aes(x=year, y=j[[1]][2], fill=year)) +
geom_boxplot() + ylab(names(j[2])) )
这些脚本会生成相同的错误消息:
错误:绘图中没有图层"
实际上,我的数据框要大得多——2800 个观测值和 250 多个具有唯一描述性名称的不同变量(例如“M2_loss”、“SSC”)。每个变量的尺度不同,因此使用构面不是一个好的解决方案。这个问题与 stackoverflow 上的其他示例的不同之处在于我试图索引数据而不是显式命名它。重要的是我捕获每个变量的唯一名称并使用它来标记 y 轴。
关于如何进行的任何想法?
【问题讨论】:
-
感谢您指出这一点。 (现已删除)for 循环从我的原始数据框创建列表,但这个可重现的示例不需要它。