Часто кажется, что пакеты R содержат несколько функций, которые создают объект некоторого class
, указанного в пакете, с универсальным или неуниверсальным methods
, которые применяются ко всем объектам этого класса. Хотя обычно легко узнать о функциях в пакете, я не нашел столь же простого способа найти точное описание самого class
для классов S3. Я думаю, что это, по крайней мере, частично преднамеренно. Определения классов можно рассматривать как своего рода внутреннюю работу, о которой, с одной стороны, не должен думать пользователь, а с другой стороны, создатель пакета может изменять ее, не желая, чтобы люди на нее полагались.
Однако я обнаружил, что иногда мне нужно создать дополнительные объекты того же class
, которые работают с функциями пакета, которые являются методами для этого class
. И не всегда легко вывести, какими характеристиками должен обладать объект, чтобы его можно было использовать пакетными функциями, которые делают разные вещи с объектами этого class
, тем более что экземпляры, созданные разными функциями, могут иметь или не иметь абсолютно одинаковую структуру.
Примером, с которым я сейчас борюсь, являются объекты forecast
, созданные различными функциями пакета forecast
. Пакет прогноза предоставляет большое количество функций, которые используют объекты прогноза в качестве входных данных. В этом сообщении в блоге Роба Хайндмана описывается функция перекрестной проверки, для которой требуется объект класса forecast
как аргумент В документации к функции tsCV
говорится, что в качестве аргумента она принимает прогнозную функцию, которая должна возвращать объект класса forecast
и иметь одномерный временной ряд в качестве своего первого объекта (предполагается, что это прогнозы) и иметь аргумент h
, указывающий горизонт. Что ж, это звучит достаточно просто. Но затем в соответствующем учебнике Хайндмана, раздел 3.6, мы сказано, что объекты прогноза содержат информацию о методе прогнозирования, данных, точечных прогнозах, интервалах прогнозирования, остатках и подогнанных значениях. Это много вещей, и я не уверен, все ли они обязательны, или некоторые из них необязательны, или требуются только в том случае, если вы собираетесь использовать определенные методы. И я ничего не знаю об обязательной внутренней структуре класса.
Наконец, я особенно хочу знать, использует ли новый пакет fable, предназначенный для замены пакета прогноза, тот же механизм класса прогноза и ту же внутреннюю структуру, или, если нет, чем они отличаются. Мне не удалось найти в fpp3 или где-либо еще что-либо, описывающее изменение или содержащее сопоставимое описание объектов class forecast
.
Мне будет неловко, если будет какая-то простая функция,
you_should_know_this_dummy(package = “forecast”, class = “forecast”)
,
который возвращает подробное описание класса. Но я искал такую функцию всеми возможными способами и не нашел.
dput
илиstr
объект класса. R, конечно же, не навязывает документацию класса S3, и фактически строка кодаz <- structure(list(x = 1, y = 2), class = "blah")
создает одноразовый объект нового класса S3, который нигде не имеет хорошего описания. - person Allan Cameron   schedule 10.12.2020