【发布时间】:2016-09-20 04:18:26
【问题描述】:
我使用 .RData 文件来存储对象(例如列表、向量等),然后将它们调用到其他脚本中,但我想知道它们是否也应该用于存储函数(很可能是用户定义的函数)?
我知道source() 通常被推荐用于此目的(创建packages 更是如此),但我看到它的一个优点是单个 .RData 文件可以包含多个对象 - 列表、数据框和功能,例如。省去需要使用load()调用对象,然后单独调用函数,使用source()。
是否有理由对我没有看到的这种方法保持谨慎?
谢谢
【问题讨论】:
-
我不知道你会被拒绝函数的任何基本功能(例如,调试和查看函数源的能力),但我也不知道它会给你带来什么.将它们存储在包中非常容易,允许将简单的源内 cmets 转换为手册页(通过
roxygen2),还有许多其他好处。 -
我看不出它有什么真正的危害,但也没有任何好处。当然,您应该将函数和对象的源代码保存在某个地方。将 RData 文件用于对象的优点是某些对象可能需要大量时间来计算/定义,但函数没有这个问题,因此没有真正的优势。如果您觉得这很诱人,因为
load和source这两个命令太多了,我建议您保留一个小的加载脚本来完成所有加载和采购。然后,采购该单个脚本执行所有操作。 -
这样您还可以进一步将您的对象等分解成更小、更有条理的部分,所有这些都由加载脚本以正确的顺序加载。
-
扩展名是
.RData,在那里保留函数没有害处,但函数的快乐地方是带有source()的包或.R文件。此外,当我们只想使用其他新数据中的函数时,我们将不得不加载我们不需要的旧数据。