'R'等价于pythons '从源文件导入函数,类,变量'?

bnl4lu3b  于 2023-02-20  发布在  Python
关注(0)|答案(1)|浏览(84)

我在R包中定义了三个不同的S4类,其中一个类使用另外两个类。
我看到devtools::load_all()按字母顺序加载脚本,因此如果一个脚本依赖于另一个按字母顺序排在后面的脚本,可能会出现问题。

  • 示例脚本a.r:*
setClass("a", slots = c(name = "character"))
  • 示例脚本b.r*
setClass("b", slots = c(name = "character", a = "a", c = "c"))
  • 示例脚本c.r:*
setClass("c", slots = c(name = "character"))

当我运行devtools::load_all()时,出现以下警告:

Warning messages:
1: undefined slot classes in definition of "b": c(class "c")

我不想重命名我的脚本,只是为了根据我希望加载它们的时间按字母顺序排列它们。
我不想在单个脚本中定义这些类,因为我想使代码更加模块化。

如何确保定义依赖类的脚本可以访问其他类:

1.不管这些类所在的脚本的名称是什么?
1.而不诉诸source(),因为这将从该脚本导入其他不需要的函数、对象、变量。
python中,这相对来说是微不足道的,可以使用如下语法:
from <relative path to .py file that defines those objects> import <desired objects>
R中,我在原地打转,试图完成类似的事情。

j5fpnvbx

j5fpnvbx1#

鉴于你的b.r宏想要定义class(c),我强烈建议你在b.r宏的顶部显式地包含命令load(c.r)。否则,当有人试图用load(b.r)而不是“load.all()”设置一些东西时,无论如何都会失败。总是避免依赖于用户执行一些“额外的”东西。

相关问题