Создание пакета R, который определяет ссылочные классы
Я создаю пакет R Пакет определяет несколько ссылочных классов. Существует зависимость между классами, потому что один является базовым классом, а другие являются подклассами. Из-за этой зависимости файлы пакета должны быть загружены в определенном порядке: сначала базовый класс, затем подклассы. Однако, если повезет, R сначала загружает подклассы и жалуется, что базовый класс не определен.
Как заставить исходные файлы пакета выполняться в определенном порядке?
Мое текущее, "решающее" "решение" - поместить все определения классов в один исходный файл, с базовым классом, определенным первым. Поговорим о некрасивом. Должен быть лучший способ.
1 ответ
Я думаю Collate:
Поле делает это для классов S4 и может помочь здесь. Из руководства по написанию расширений R, раздел 1.1.1
Поле "Сортировка" может использоваться для управления порядком сортировки файлов кода R в пакете, когда они обрабатываются для установки пакета. По умолчанию выполняется сопоставление в соответствии с локалью 'C'. Если присутствует, то в спецификации сортировки должны быть перечислены все файлы кода R в пакете (принимая во внимание возможные подкаталоги ОС, см. "Подкаталоги пакета") в виде списка разделенных пробелами путей к файлам относительно подкаталога "R". Пути, содержащие пробелы или кавычки, должны быть в кавычках. Специфичное для ОС поле сортировки ("Collate.unix" или "Collate.windows") будет использоваться вместо "Collate".
И, например, пакет XML имеет
Collate: AAA.R DTD.R DTDClasses.R DTDRef.R SAXMethods.S XMLClasses.R
applyDOM.R assignChild.R catalog.R createNode.R dynSupports.R
error.R flatTree.R nodeAccessors.R parseDTD.R schema.S
summary.R tangle.R toString.S tree.R version.R xmlErrorEnums.R
xmlEventHandler.R xmlEventParse.R xmlHandler.R
xmlInternalSource.R xmlOutputDOM.R xmlNodes.R xmlOutputBuffer.R
xmlTree.R xmlTreeParse.R htmlParse.R hashTree.R zzz.R
supports.R parser.R libxmlFeatures.R xmlString.R saveXML.R
namespaces.R readHTMLTable.R reflection.R xmlToDataFrame.R
bitList.R compare.R encoding.R fixNS.R xmlRoot.R serialize.R
xmlMemoryMgmt.R keyValueDB.R solrDocs.R XMLRErrorInfo.R
xincludes.R namespaceHandlers.R tangle1.R