【发布时间】:2017-09-07 21:01:35
【问题描述】:
我有三个不同的 data.frames(GRCYPT_flows、ESIEIT_flows、GRCYPT_flows),它们包含相同的变量(report_ctry、partner_ctry、indicator、year、value),但具有不同的级别/观察值。现在我想为每个 data.frames 创建图。由于图应该看起来相同,我似乎合理地使用迭代命令。我尝试了 foreach 循环:
foreach(i=GRCYPT_flows, ESIEIT_flows, GRCYPT_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("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())}
该代码实际上不起作用。我在这里遇到问题:
将 data.frame 分配给迭代变量。
告诉 foreach 循环将每次迭代保存到具有不同名称(plot1、plot2、plot3 等)的不同列表中。
我比较肯定,这很容易解决,如果你对 R 有一些经验的话。但是,我是一个完全的新手,所以我真的不知道从哪里开始(我可以使用 Stata 轻松完成我至少有一些经验)。
我想做的是告诉 R:“为每个 data.frames 绘制一个图,并将每个图保存在一个单独的列表中。”
【问题讨论】:
-
您是否有理由要使用
foreach而不是简单的for(或list+lapply) -
也许您可以将 data.frames 的字符名称列表传递给
foreach并使用get获取实际的 data.frame。您可以使用foreach基础架构返回一个列表(例如,参见here)。 -
@docendodiscimus 也许 OP 可以升级以在某个时候使用并行后端。
-
@docendo discimus:嗯,我愿意接受任何可行的建议。它不一定是 foreach 循环。正如我所说,我对 R 完全陌生,对许多命令一无所知。