我正在创建一个R包。该包定义了几个参考类。这些类之间存在依赖关系,因为一个是基类,其他是子类。由于这种依赖性,必须按一定顺序加载程序包文件:首先加载基类,然后再加载子类。但是,仅凭运气,R首先加载了子类,并抱怨未定义基类。
如何强制以特定顺序执行程序包的源文件?
我当前的“解决方案”是将所有类定义放入一个源文件中,首先定义基类。谈丑。有更好的方法。
我认为该Collate:领域可为S4类提供帮助,这也可能会有所帮助。从Writing R Extensions手册的1.1.1节开始
处理软件包中的R代码文件时,“整理”字段可用于控制它们的排序顺序。默认是根据“ C”语言环境进行整理。如果存在,则整理规范必须列出程序包中的所有 R代码文件(将可能的特定于OS的子目录考虑在内,请参阅“程序包子目录”)作为相对于'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
Run Code Online (Sandbox Code Playgroud)