Более длинная длина объекта не кратна короткой длине объекта?
Я не понимаю, почему R дает мне предупреждение о том, что "Длительная длина объекта не кратна короткой длине объекта"
У меня есть этот объект, который генерируется путем создания агрегата по серии xts, дающей среднюю неделю недели:
u <- aggregate(d, list(Ukedag = format(index(d),"%w")), median)
1 314.0
2 282.5
3 270.0
4 267.0
5 240.5
Затем я пытаюсь применить это к моей исходной серии xts, которая выглядит так (только намного дольше)
head(d)
2009-01-02 116
2009-01-05 256
2009-01-06 286
Использование:
coredata(d) <- coredat(d) - u[format(index(d),"%w")];
Это приводит к предупреждению.
Цель состоит в том, чтобы вычесть среднее значение дня недели. Он работает, несмотря на предупреждение, но о чем беспокоиться?
Исправленное решение: попытка 2
apply.daily(d, function(x) coredata(x) - u[format(index(x), "%w")] )
У меня действительно была серьезная ошибка. Это не дает никаких предупреждений, и я проверил его, выполнив:
apply.daily(d, function(x) u[format(index(x), "%w")] )
Затем, проверяя некоторые даты, и оказалось, что это было согласовано с календарем.
Ответы
Ответ 1
Да, это то, о чем вам следует беспокоиться. Проверьте длину объектов с помощью nrow(). R может автоматически реплицировать объекты так, чтобы они были одинаковой длины, если они отличаются друг от друга, что означает, что вы можете выполнять операции с несогласованными данными.
В этом случае у вас есть очевидный недостаток в том, что вы вычитаете агрегированные данные из необработанных данных. Они, безусловно, будут иметь разную длину. Я предлагаю вам объединить их как временные ряды (используя даты), затем locf(), а затем выполнить вычитание. В противном случае объедините их, усекая исходные даты до того же интервала, что и совокупная серия. Просто будьте очень осторожны, чтобы не прекращать наблюдения.
Наконец, в качестве некоторых общих советов, когда вы начинаете: посмотрите на результат своих вычислений, чтобы узнать, имеют ли они смысл. Вы можете даже потянуть их в таблицу и повторить результаты.