ich habe zwei (vorerst, später werden es noch mehr) data.frames mit den geschmeidigen Namen GRCYPT_flows und ESIEIT_flows. Beide enthalten genau dieselben Variablen, nämlich report_ctry, partner_ctry, indicator, year, value.
Ich möchte nun für beide frames dieselbe Grafik erstellen und unter zwei verschiedenen Namen abspeichern. Anstatt zweimal denselben Code zu schreiben, ist es natürlich bequemer, eine Schleife zu benutzen. Hier stehe ich allerdings vor dem Problem, dass ich es nicht hinbekomme R zu sagen, dass es mir die Grafiken in zwei verschiedenen listen mit unterschiedlichen Namen abspeichert. Ich habe hier selbst schon mit der foreach-Schleife hantiert:
Code: Alles auswählen
foreach (i=c(GRCYPT_flows, ESIEIT_flows)) %do% {
ggplot(i, aes(year, value)) +
geom_line(aes(colour=partner_ctry, linetype=indicator)) + facet_wrap(~report_ctry) +
theme(axis.text.x=element_text(angle=90, vjust=0.5)) +
scale_x_continuous(breaks=seq(2002, 2012, 2), name="") +
scale_y_continuous(name="Billion Euros") +
scale_colour_discrete(breaks=c("EA19", "ROW_NON_EA19"), labels=c("EA19", "Extra-EA19")) +
scale_linetype_discrete(breaks=c("EA19", "ROW_NON_EA19"), labels=c("Trade", "Capital")) +
theme(legend.title=element_blank())
}
Auf stack overflow habe ich den folgenden Lösungsent empfohlen bekommen:
Code: Alles auswählen
my_data <- list(GRCYPT_flows, ESIEIT_flows)
my_plot <- lapply(my_data, function(i) {
ggplot(i, aes(year, value)) +
geom_line(aes(colour=partner_ctry, linetype=indicator)) + facet_wrap(~report_ctry) +
theme(axis.text.x=element_text(angle=90, vjust=0.5)) +
scale_x_continuous(breaks=seq(2002, 2012, 2), name="") +
scale_y_continuous(name="Billion Euros") +
scale_colour_discrete(breaks=c("EA17", "ROW_NON_EA17"), labels=c("EA17", "Extra-EA17")) +
scale_linetype_discrete(breaks=c("EA17", "ROW_NON_EA17"), labels=c("Trade", "Capital")) +
theme(legend.title=element_blank())
})
Oder noch einmal anders formuliert. Ich würde gerne das folgende in einem Schleifen-Befehl zusammenfassen:
Code: Alles auswählen
plot1a <- ggplot(GRCYPT_flows,aes(year,value)) +
geom_line(aes(colour=partner_ctry,linetype=indicator)) + facet_wrap(~report_ctry) +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) +
scale_x_continuous(breaks=seq(2002, 2012, 2), name="") +
scale_y_continuous(name="Billion Euros") +
scale_colour_discrete(breaks=c("EA19","ROW_NON_EA19"), labels=c("EA19","Extra-EA19")) +
scale_linetype_discrete(breaks=c("TRADE_IM","VALUE"), labels=c("Trade","Capital")) +
theme(legend.title=element_blank())
plot1b <- ggplot(ESIEIT_flows,aes(year,value)) +
geom_line(aes(colour=partner_ctry,linetype=indicator)) + facet_wrap(~report_ctry) +
theme(axis.text.x=element_text(angle=90,vjust=0.5)) +
scale_x_continuous(breaks=seq(2002,2012,2),name="") +
scale_y_continuous(name="Billion Euros") +
scale_colour_discrete(breaks=c("EA19","ROW_NON_EA19"), labels=c("EA19","Extra-EA19")) +
scale_linetype_discrete(breaks=c("TRADE_IM","VALUE"), labels=c("Trade","Capital")) +
theme(legend.title=element_blank())