从计算中减去均值将答案列入清单?

时间:2011-10-28 18:09:22

标签: list wolfram-mathematica

我有一个循环浏览两个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时,这会导致问题(所有数据都位于图表的最右侧,图表不可用。

任何人都可以建议这里可能会发生什么以及如何避免它?

谢谢!

3 个答案:

答案 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是单个数值而不是列表,则输出应该是正确的。