我在R的哪个地方永久存储我的自定义功能?

时间:2010-07-08 18:30:41

标签: r

我有几个自定义函数,我经常在R中使用。而不是在每个脚本中使用此文件(或其中的部分),是否有某种方法将其添加到基本R文件中,以便它们在我使用时始终可用R'

5 个答案:

答案 0 :(得分:22)

是的,创建一个包。有许多教程以及Writing R Extensions副本附带的R手册。

起初看起来似乎太多了,但你可能会很高兴你从长远来看这样做。

PS然后您可以从~/.Rprofile加载该包。对于非常短的代码,您也可以在那里定义它。

答案 1 :(得分:17)

对于一些有用的功能,包可能有点过分。我认为明确地source()在你需要它们时没有任何问题 - 至少它是明确的,所以如果你给某人发电子邮件你的代码,你就不会忘记包含那些其他的脚本。

答案 2 :(得分:9)

另一种选择是使用.Rprofile文件。您可以在?Startup中了解详细信息。基本上,这个想法是:

  

...在当前目录或中搜索名为'.Rprofile'的文件   在用户的主目录中(按此顺序)。用户配置文件是   来自工作区。

您可以阅读here了解有多少人使用此功能。

答案 3 :(得分:2)

接受的答案最好是长期的:制作一个包裹。

幸运的是,devtools软件包大大减少了实现这一目标的学习曲线:它可以自动创建软件包(很好地帮助您正确起步),鼓励良好实践(例如使用{{进行记录) 1}},并帮助使用在线版本控制(bitbucket,github或其他),与他人共享您的包。它也非常有助于平滑您提交CRAN的方式。

http://adv-r.had.co.nzhttp://r-pkgs.had.co.nz的好文档。

create your package,例如你可以:

roxygen2

答案 4 :(得分:1)

您还可以查看'mvbutils'软件包:它允许您设置一组“任务”(其中包含工作区“.RData”文件的文件夹),这样您就可以随时查看祖先任务中的内容(即祖先在search()路径中)。因此,您可以将自定义函数放在始终启动R的“启动任务”中;然后你改变你需要的任何项目特定任务,这样你就可以避免混乱的工作区,但你仍然可以使用(和编辑)自定义函数,因为启动任务总是祖先的。对象(包括函数)存储在“.RData”文件中,因此自动加载/保存,但函数有单独的文本备份工具。

在R中有很多不同的工作方式,没有“一刀切”的最佳解决方案。找到概述也不容易!只为自己说话:

  • 我不是每次都要“采购”所有东西的粉丝;一方面,它根本不适用于大数据集和/或模型运行结果。

  • 我认为软件包 hard 可以创建和维护;有一个非常重要的开销。在您编写的前5个软件包之后,如果您至少每周执行一次,它会更容易一些,所以您不会忘记如何,但实际上......

事实上,'mvbutils'还有一堆工具,用于促进包的创建和(特别是)维护,旨在与任务层次系统平滑地连接。我用&编辑我自己的包(包括编辑mvbutils本身);但如果不是'mvbutils'中的工具,我会在一周的大多数日子里沮丧地磨牙。