r - qplot call overwrites list elements -
running r script
list1<-list() list2<-list() for(i in 1:3){ list1[[i]]<-i } for(i in 1:3){ list2[[i]]<-qplot(i) }
i recognize list1 contains elements 1,2,3. list2 contains 3 times element qplot(3).
is qplot not compatible looping? how can save plots in list using loop?
in ggplot
aesthetics stored expressions , evaluated when plot rendered. qplot(i)
not generate plot, rather plot definition, using reference variable i
. 3 plots same in sense reference i
.
if type
list2[[1]]
after second loop has run, cause ggplot
object stored in list2[[1]]
rendered, using whatever value i
set @ moment (which 3 after loop).
try this:
i <- 4 list2[[1]]
now plot rendered equivalent qplot(4)
.
the workaround depends on trying achieve. basic idea not use external variables in aesthetics. in trivial case,
for(i in 1:3){ list2[[i]]<-ggplot(data.frame(x=i), aes(x))+geom_histogram() }
will work. because reference external variable i
not in aesthetics (e.g., call aes(...)
.
Comments
Post a Comment