我有一个循环浏览两个sperate列表的函数,并按如下方式将它们组合成一个:
spread = Table[{gld[[i, 1]], (gld[[i, 2]] - gdx[[i, 2]]) },
{i, 1, Length[gld], 1}]
这很好用,并以以下形式生成答案:
{{2009, 6, 1}, 52.72}
但是当我添加一个减法时,如下:
spread = Table[{gld[[i, 1]], (gld[[i, 2]] - gdx[[i, 2]]) - meanspread },
{i, 1, Length[gld], 1}]
我得到以下格式的答案:
{{2009, 6, 1}, {-20.2896}}
当我想使用DateLinePlot时,这会导致问题(所有数据都位于图表的最右侧,图表不可用。
任何人都可以建议这里可能会发生什么以及如何避免它?
谢谢!
答案 0 :(得分:4)
很可能meanspread
不是数字,而是单项目列表,例如{1.1}
。如果不了解更多细节并对您正在使用的所有数据/变量进行采样,则无法判断。
答案 1 :(得分:3)
我不明白,尽我所能重新创造你的输入。这实际上取决于你如何计算meanspread
。
(*In[2]:= *)
gld = FinancialData["NYSE:GLD", "Close", {"June 1, 2009", DateString[], "Day"}];
gdx = FinancialData["NYSE:GDX", "Close", {"June 1, 2009", DateString[], "Day"}];
(*In[5]:= *)
First[spread = Table[{gld[[i, 1]], (gld[[i, 2]] - gdx[[i, 2]])}, {i, 1, Length[gld], 1}]]
(*Out[5]= *)
{{2009, 6, 1}, 52.72}
(*In[8]:= *)
meanspread = Mean[spread[[All, 2]]]
(*Out[8]= *)
74.0373
(*In[9]:= *)
First[Table[{gld[[i, 1]], (gld[[i, 2]] - gdx[[i, 2]]) - meanspread}, {i, 1, Length[gld], 1}]]
(*Out[9]= *)
{{2009, 6, 1}, -21.3173}
答案 2 :(得分:0)
我认为你会从更简单的结构中受益。
spread = {gld[[All, 1]], gld[[All, 2]] - gdx[[All, 2]] - meanspread}\[Transpose]
如上所述,如果meanspread
是单个数值而不是列表,则输出应该是正确的。