我对lapply
的经验不多,所以我希望有人可以帮助我。
我看到了使用lapply here的建议。
我的数据在列中,我创建了一个向量,将样本分成两组。这是一个非常简化的版本,我希望为G0绘制单个点,为G0绘制2个点。
>DF
V1 V2 V3
S1 3 5 6
S2 2 7 2
S3 4 5 7
status = c("G0","G0", "G1")
我绘制一个图的简化代码是
ggplot(DF, aes(x=status, y=DF[,1])) +geom_jitter(position=position_jitter(0.2))
当我使用lapply
创建一个绘图列表时,它只是重复相同的绘图。
list_of_plots<-lapply(1:3,function(i) {ggplot(DF, aes(x=status, y=DF[,i])) +geom_jitter(position=position_jitter(0.2))})
任何想法为什么?或者以某种方式创建ggplots列表的任何其他想法? 我想使用多色函数将这些图的多个绘制成pdf。
中的示例答案 0 :(得分:2)
我不确定您的数据实际上是什么样子,因为示例数据中的status
与您发布的地图中的status
不同。无论如何,这里是一个如何为每列数据创建单独的绘图的示例:
library(gridExtra) # For grid.arrange function
# Data frame based on your sample data
DF = structure(list(status = c("S1", "S2"), V1 = c(3L, 2L), V2 = c(5L,7L), V3 = c(6L, 2L)), .Names = c("status", "V1", "V2", "V3"), class = "data.frame", row.names = c(NA, -2L))
DF
status V1 V2 V3
1 S1 3 5 6
2 S2 2 7 2
list_of_plots<-lapply(names(DF)[2:4], function(i) {
ggplot(DF, aes_string(x="status", y=i)) +
geom_jitter(position=position_jitter(0.2))})
do.call(grid.arrange, c(list_of_plots, ncol=3))