Вычитая среднее из расчета помещает ответ в список? - PullRequest
0 голосов
/ 28 октября 2011

У меня есть функция, которая циклически перебирает два отдельных списка и объединяет их в один из следующих:

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 ]

4 голосов
/ 28 октября 2011

Скорее всего meanspread это не число, а список из одного элемента, например {1.1}. Невозможно сказать, не зная больше деталей и имея образец всех данных / переменных, которые вы используете.

3 голосов
/ 28 октября 2011

Я не понимаю, воссоздаю ваши данные как можно лучше.Это действительно зависит от того, как вы вычисляете 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 голосов
/ 29 октября 2011

Я думаю, вы бы выиграли от более простой конструкции.

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

Как уже говорилось, если meanspread - это одно числовое значение, а не список, вывод должен быть правильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...