Ошибка довольно понятна. Ваш временной ряд, однако вы его создали, не имеет сезонных циклов или менее 2 сезонных циклов. (Это может не указывать, что данные являются не сезонными, возможно, вы неправильно создали samplets
.) Например, я могу воспроизвести ошибку, имея временные ряды с 7 квартальными наблюдениями, что явно не два полных полных сезонных цикла:
R> TS <- ts(1:7, frequency = 4)
R> decompose(TS)
Error in decompose(TS) : time series has no or less than 2 periods
R> TS
Qtr1 Qtr2 Qtr3 Qtr4
1 1 2 3 4
2 5 6 7
Аналогично, если я не укажу какую-либо субгоновую частоту (т. е. frequency = 1
в вызове ts()
, создавая ваш объект временного ряда samplets
[который по умолчанию]) Я получаю ту же ошибку:
R> TS <- ts(1:7)
R> decompose(TS)
Error in decompose(TS) : time series has no or less than 2 periods
В любом случае это указывает на то, что вы неправильно создали свой "ts"
объект, не указав правильные аргументы frequency
или deltat
или у вас есть временные ряды недостаточной длины (количество лет) для покрытия двух полных сезонных циклов.
Пожалуйста, прочтите ?ts
более подробно, чтобы убедиться, что вы правильно создаете samplets
. Если вам нужна дополнительная помощь, опубликуйте воспроизводимый пример.
Определенно используйте onload
. Разделите свои сценарии от Вашей страницы, или Вы сойдете с ума, пытаясь распутать их позже.
onload событие считают надлежащим способом сделать это, но если Вы не возражаете пользоваться библиотекой JavaScript, $ jQuery (документ) .ready () еще лучше.
$(document).ready(function(){
// manipulate the DOM all you want here
});
преимущества:
я надеюсь, что не становлюсь Парнем, Который Предлагает jQuery По Каждому Вопросу о JavaScript, но это действительно является большим.
Я записал много JavaScript, и window.onload ужасен способ сделать это. Это является хрупким и ожидает, до каждый актив страницы загрузился. Таким образом, если одно изображение берет навсегда, или ресурс не делает тайм-аута, пока 30 секунд, Ваш код не будет работать, прежде чем пользователь может видеть/управлять страницу.
кроме того, если другая часть JavaScript решает использовать window.onload = функция () {}, Ваш код сдуется.
надлежащим способом выполнить Ваш код, когда страница готова, является ожидание элемента, который необходимо изменить, готово/доступно. Многие библиотеки JS имеют это как встроенную функциональность.
Выезд:
window.onload на IE ожидает двоичной информации для загрузки также. Это не строгое определение, "когда DOM загружается". Таким образом, может быть значительная задержка между тем, когда страница, как воспринимают, загружается и когда Ваш сценарий запущен. Из-за этого я рекомендовал бы изучить одну из многочисленных платформ JS (прототип/jQuery) для обработки тяжелого подъема для Вас.
Вот очень хорошая статья об этой теме:
http://mattberseth.com/blog/2008/08/when_is_it_safe_to_modify_the.html
Фанат @The
я вполне уверен, которым window.onload назовут снова, когда пользователь поразит кнопку "Назад" в IE, но не становится позвонившим снова в Firefox. (Если они недавно не изменили его).
В Firefox, onload
назван, когда DOM закончил загружаться независимо от того, как Вы перешли к странице.
Мое взятие является бывшим becauase, у Вас может только быть 1 функция window.onload, в то время как встроенные блоки сценария Вы имеете число n .
В то время как я соглашаюсь с другими об использовании window.onload, если это возможно, для чистого кода, я вполне уверен, которым window.onload назовут снова, когда пользователь поразит кнопку "Назад" в IE, но не становится позвонившим снова в Firefox. (Если они недавно не изменили его).
Редактирование: у Меня могло быть это назад.
В некоторых случаях, необходимо использовать встроенный сценарий, когда Вы хотите, чтобы Ваш сценарий был оценен, когда пользователь поражает кнопку "Назад" от другой страницы, назад к Вашей странице.
Любые исправления или дополнения к этому ответу приветствуются... Я не эксперт JavaScript.
Некоторые платформы JavaScript, такой как mootools, предоставляют Вам доступ к специальному мероприятию, названному "domready":
Содержит окно Event 'domready', который выполнится, когда DOM загрузился. Чтобы гарантировать, чтобы элементы DOM существовали, когда код, пытающийся получить доступ к ним, выполнен, они должны быть размещены в 'domready' событии.
window.addEvent('domready', function() { alert("The DOM is ready."); });
onLoad, потому что намного легче сказать то, что выполняет код, когда страница загружается, чем необходимость читать вниз через ставриды HTML, ища теги script, которые могли бы выполниться.