2

我正在创建一个 R 包。该包定义了几个参考类。类之间存在依赖关系,因为一个是基类,另一个是子类。由于这种依赖关系,包文件必须按一定的顺序加载:首先是基类,然后是子类。然而,仅凭我的运气,R 会先加载子类并抱怨未定义基类。

如何强制包的源文件以特定顺序执行?

我目前的kludge“解决方案”是将所有类定义放入一个源文件中,首先定义基类。说丑。一定有更好的办法。

4

1 回答 1

5

我认为该Collate:领域为 S4 课程做到了这一点,并且在这里也可能有所帮助。来自编写 R 扩展手册,第 1.1.1 节

当为包安装处理这些 R 代码文件时,“整理”字段可用于控制包中 R 代码文件的整理顺序。默认是根据“C”语言环境进行整理。如果存在,则整理规范必须列出包中的所有R 代码文件(考虑可能的特定于操作系统的子目录,请参阅“包子目录”)作为相对于“R”子目录的文件路径的空格分隔列表。需要引用包含空格或引号的路径。将使用特定于操作系统的排序规则字段(“Collat​​e.unix”或“Collat​​e.windows”)而不是“Collat​​e”。

例如 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
于 2012-10-05T01:54:47.047 回答