2011-10-28 59 views
0

我有通過兩個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時,會導致問題(所有數據位於圖的最右端,並且圖不可用。

任何人都可以提出什麼可能發生在這裏以及如何我可以避免它?

謝謝!

回答

4

最可能的meanspread不是一個數字,而是一個單項列表,如{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} 
+0

很好的猜測OP的數據背後是什麼。當然,你一定是一位經驗豐富的投資者。 –

+0

@Sjoerd我剛問過Wolfram | Alpha,'gld'和'gdx'是什麼,數字算出來了。 OP可以很好地使用描述性變量名稱。 –

0

我想你會受益於更簡單的結構。

spread = {gld[[All, 1]], gld[[All, 2]] - gdx[[All, 2]] - meanspread}\[Transpose] 

前面已經說過,如果meanspread是一個單一的數值,而不是一個列表,輸出應該是正確的。