构建一个定义引用类的R包

时间:2012-10-05 01:43:07

标签: r reference-class

我正在创建一个R包。该包定义了几个引用类。类之间存在依赖关系,因为一个是基类,另一个是子类。由于这种依赖性,必须按特定顺序加载包文件:首先是基类,然后是子类。但是,幸运的是,R首先加载了子类并抱怨没有定义基类。

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

我当前的kludge“解决方案”是将所有类定义放入一个源文件中,首先定义基类。谈论丑陋。必须有一个更好的方法。

1 个答案:

答案 0 :(得分:4)

我认为Collate:字段可以为S4类做到这一点,也可以在这里提供帮助。从Writing R Extensions手册Section 1.1.1

  

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

例如,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