Dynamic Creation and Use of Object Names
... and to add to Ivan's suggestions, **depending on what you are trying to show with your grid of graphs,** you may wish to consider using ggplot's "facet" capabilities to assure that any quantitative variables that you are encoding in the maps (e.g. by color, density shading, etc.) are depicted on the same scale with appropriate legends. (Of course, ignore if this is not the case). If so, you will need a different data structure for your data, I believe. Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
On Mon, Aug 23, 2021 at 4:51 AM Dr Eberhard Lisse <nospam at lisse.na> wrote:
Thank you, more to study :-)-O el On 23/08/2021 10:20, Ivan Krylov wrote:
On Mon, 23 Aug 2021 08:37:54 +0200 Dr Eberhard Lisse <nospam at lisse.NA> wrote:
create the variables dynamically and add them to to the grid (dynamically, ie adding more countries)
In my opinion, creating variables in the global environment
programmatically may lead to code that is hard to understand and debug
[*]. A key-value data structure (a named list or a separate
environment) would avoid the potential problems from variable name
collision. How about the following:
1. Put the countries in a vector: c('Namibia', 'Germany', ...)
2. Use lapply() to get a list of objects returned from your PICTURE
function
3. To save the pictures into individual files, loop over the list. You
can use setNames on the step 1 or 2 to make it a named list and keep
the country names together with their pictures:
for (n in names(pictures)) {
dev.new()
print(pictures[[n]])
ggsave(paste0(n, '.png'), ...)
dev.off()
}
(You can also use the png() device and plot straight to the file,
avoiding the need to draw the plot in the window for a fraction of a
second and for ggsave().)
4. Use the grobs= argument of grid.arrange() to pass the list of
objects to arrange instead of passing individual objects via ...
-- To email me replace 'nospam' with 'el'
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.