Hi,
I have a function PICTURE() and do something like
COUNTRY = 'Namibia'
NAKURVE = PICTURE(COUNTRY)
NAKURVE
ggsave(paste0(tolower(COUNTRY),".png"), width = 16, height = 9)
COUNTRY = ('Germany')
DEKURVE = PICTURE(COUNTRY)
DEKURVE
ggsave(paste0(tolower(COUNTRY),".png"), width = 16, height = 9)
COUNTRY = ('Netherlands')
NLKURVE = PICTURE(COUNTRY)
NLKURVE
ggsave(paste0(tolower(COUNTRY),".png"), width = 16, height = 9)
[...]
COUNTRYGRID=grid.arrange(NAKURVE, DEKURVE, NLKURVE,
ncol=3)
COUNTRYGRID
ggsave(paste0("R7.incidence.", Sys.Date(), ".png"),
COUNTRYGRID)
I am not able to figure out (and/or find on Google) how to do this in a
loop (of sorts), ie create the variables dynamically and add them to to
the grid (dynamically, ie adding more countries)
Any ideas?
greetings, el
--
To email me replace 'nospam' with 'el'
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 ... -- Best regards, Ivan [*] For example, there's this FAQ for a different language: https://perldoc.perl.org/perlfaq7#How-can-I-use-a-variable-as-a-variable-name?