Создание пакета R, определяющего ссылочные классы

Я создаю пакет R. Пакет определяет несколько эталонных классов. Между классами существует зависимость, поскольку один из них является базовым классом, а другие — подклассами. Из-за этой зависимости файлы пакетов должны загружаться в определенном порядке: сначала базовый класс, затем подклассы. Однако, как мне повезло, R сначала загружает подклассы и жалуется, что базовый класс не определен.

Как я могу заставить исходные файлы пакета выполняться в определенном порядке?

Мое текущее «решение» состоит в том, чтобы поместить все определения классов в один исходный файл, причем базовый класс определен первым. Разговор о некрасивом. Должен быть лучший способ.


person pteetor    schedule 05.10.2012    source источник


Ответы (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
person Dirk Eddelbuettel    schedule 05.10.2012