【发布时间】:2019-01-27 20:20:29
【问题描述】:
我对编程和数据分析都很陌生,请多多包涵。我的数据目前包含 14 个矩阵 (lom) 的列表,每个矩阵对应一个国家的数据(带有两个字母的国家代码)。
这是奥地利的完整示例:
> lom["AT"]
$`AT`
Year AllKey AllSub SelKey SelSub
1 2000 1.622279 0.5334964 1.892894 0.8057591
2 2001 1.903745 0.5827514 2.291335 0.8295899
3 2002 1.646538 0.4873866 2.006873 0.7360566
4 2003 1.405250 0.8692641 2.105648 1.2711968
5 2004 1.511154 1.5091751 1.970236 1.9407666
6 2005 1.459177 0.6781008 1.808982 1.1362805
7 2006 1.604652 0.5038658 1.942126 0.7992008
8 2007 2.107326 0.9260200 2.683072 1.3302627
9 2008 1.969735 0.6178362 2.994758 1.2051339
10 2009 1.955768 0.7365529 2.896198 1.2272024
11 2010 2.476157 0.7952590 3.715950 1.5686643
12 2011 2.092459 0.4970011 2.766169 0.6476707
13 2012 1.913122 0.5338756 2.450942 0.6022315
14 2013 2.086200 0.6739412 2.786736 0.9211941
15 2014 2.579428 0.8424793 3.152541 1.0225888
16 2015 10.662568 5.8472436 9.769320 3.8840780
17 2016 11.088286 4.6504581 10.567789 3.2383420
18 2017 7.225053 1.7528594 6.747515 1.2781224
我想根据 x = Year 和 y = 每个其他变量绘制所有 14 个国家/地区,即四个图,每个图有 14 行。因此问题标题中的要求。
我不断想出一些涉及for 循环和一些apply 函数组合的可能性,例如:
for (i in colnames(lom$anyCountry)) {
ggplot(lapply(lom, function(x) x[,1:14], aes(x=Year, y=i)
}
除了我现在可以看到的许多其他问题之外:
错误:
data必须是数据框,或其他可被fortify()强制转换的对象,而不是列表
这导致我将矩阵列表组合成一个大矩阵,灵感来自 this:
bigDF <- do.call(rbind, lom)
我想我可以通过其他方式重组我的数据,也许我缺少一些有用的功能......可能两者兼而有之。对于如何尽可能有效地实现这一点,我将不胜感激。
【问题讨论】:
-
欢迎来到 SO!这个社区有一些规则和规范,遵循它们将帮助您很好地回答您的问题。特别是,最好提供一个MCVE(一个最小的、完整的和可验证的示例)。查看this page 以获取有关 R 特定 MCVE 的提示。最好避免使用代码/数据和here's why 的图像。谢谢,祝你好运!
-
谢谢@DanY!真的很有用,我以前从未发布过,因为提供“测试”代码似乎已经够难了……我想我现在有一些很好的指示! :)