源.R文件作为R包

时间:2018-04-10 15:41:37

标签: r

说我有一个文件utils.R,而不是包含一些函数foo, moo

我希望能够获取此文件,然后像典型的R包一样引用函数和源文件,比如说:

customSource(file='utils.R', name='my_utils')
mu_utils::foo()
mu_utils::moo()

如何做到这一点?

2 个答案:

答案 0 :(得分:0)

你做不到。引用?source

  

从该文件读取并解析输入,直到文件末尾为止   到达,然后解析的表达式按顺序进行评估   选择的环境

基本上,当您获取文件时,所有代码都会像您在控制台中输入一样运行。在您的情况下,函数foomoo将添加到您当前的环境中,就像您将它们输入控制台一样。

如果要将函数加载到特定环境中,可以使用sys.source函数指定要解析源代码的环境,但这仍然无法执行您想要的操作。

正如@dww评论的那样,做你想做的事的唯一方法就是把你的文件变成一个包。实际上并不难。如果您正在使用RStudio,只需创建一个新项目并选择“New Package”。它将创建您需要的所有文件的文件夹和骨架。 Hadley Wickham的这本免费书籍旨在制作公开发行的套餐,因此它有很多你不需要的细节,但应该回答你对这个过程的任何其他问题:http://r-pkgs.had.co.nz/

答案 1 :(得分:0)

可以!不完全像一个包裹,而是一个清单!为此,请使用环境:

my_utils <- base::new.env()
source("utils.R", local = my_utils)
my_utils$foo()
my_utils$moo()

请阅读https://adv-r.hadley.nz/environments.html,以更好地了解环境。

相关问题