【发布时间】:2012-09-01 00:04:12
【问题描述】:
我正在尝试在 R 中创建一个包,其中我创建了许多新的自定义类。每个类都在不同的文件中。类从父类继承并继承到其他类。
在运行我的代码时,我会这样称呼它们
source("package/father.R")
source("package/son.R")
source("package/grandson.R")
Son类中定义的孙类需要的一些方法的定义。我使用 package.skeleton() 来调用它们中的每一个并创建一个包,它似乎工作正常。但是在运行 R CMD Check(以及尝试安装到 R 中)时,它会抛出一个错误,因为该函数会尝试按字母顺序调用文件,因此文件 grandson.R 在 son.R 之前被调用,它会显示错误消息方法尚未定义。如果我将名称更改为 zgrandson.R,R 会最后调用该文件,并且一切似乎都运行良好,但这显然不是解决问题的方法。
我已经阅读了创建包的教程,但它们似乎都处理了在 R 中没有继承/调用其他文件的简单情况。希望我已经说清楚了。
【问题讨论】:
-
“如果我将名称更改为 zgrandson.R,R 会最后调用该文件,一切似乎都正常,但这显然不是解决问题的方法。”为什么?这正是我使用的解决方案以及许多其他解决方案(以
00Classes.R之类的内容开始第一个脚本)。 -
这工作正常,但看起来像解决问题的丑陋/骇人听闻的方式:D。感谢您让我知道其他人也在使用此解决方法。虽然我想知道问题是否出在我的代码结构本身,因为我经历过的优秀程序员的脚本似乎都没有调用其他文件。
标签: r class inheritance packages