在 R 中处理个人功能的最佳实践
Posted
技术标签:
【中文标题】在 R 中处理个人功能的最佳实践【英文标题】:Best practices to handle personal functions in R 【发布时间】:2014-02-26 20:46:49 【问题描述】:我在R
中编写了个人功能,这些功能并非特定于一个(或几个)项目。
放置这些函数的最佳实践是什么(R
)?
最好的方法是让一个文件在启动时获取源文件?还是有更好的(推荐的)方法来处理这种情况?
【问题讨论】:
把它们放在一个包里并记录下来。 为此目的使用 .Rprofile 文件,它在启动时获取。 有人想关闭这个问题,说它太基于意见了。我认为这是一个足够好的问题,可以留待讨论。 【参考方案1】:创建一个名为“utilities”的包,将实用程序功能放入该包中,尝试针对每个文件一个功能,并将包存储在源代码控制系统(例如,GIT、SVN)中。从长远来看,它将为您节省时间。
附: .Rprofile 往往会被意外删除。
【讨论】:
这是最好的解决方案。但不要称它为utilities
,稍微个性化它,但当你分享它时,人们就会知道它来自哪里。
谢谢,我想这就是我要走的路。【参考方案2】:
如果你有很多,最好把它做成一个你每次开始工作时加载的包。
拥有一堆函数的单一脚本可能不是一个好主意。而是将文件分成几个文件,每个文件要么只有一个功能(我的偏好),要么有一组逻辑上相似的功能。这使您在需要进行更改时更容易找到内容。
【讨论】:
【参考方案3】:大多数人为此使用.Rprofile
文件。这里有两个链接详细讨论了这个文件。
-
http://www.statmethods.net/interface/customizing.html
http://blog.revolutionanalytics.com/2013/10/sample-rprofile.html
在我的 .Rprofile 文件的顶部,我为我通常使用的各种库调用 library()
。我也有一些我已经开始依赖的个人方便的功能。因为这个文件是在启动时获取的,所以我每次会话都可以使用它们。
【讨论】:
这也意味着您的脚本将无法为其他人工作,除非他们加载所需的库... 是的,这是真的。从某种意义上说,您可以考虑将代码放在 .Rprofile 中,这是一种形式和严谨的极端,另一种是编写一个包并将其放在 CRAN 上。我都做过,并认为它们都有不同的目的。从 OP 的问题来看,我认为 .Rprofile 将是一个很好的起点。 一个包不必在 CRAN 上运行。 这很好。我创建的唯一包是用于在 CRAN 上分发的。您是否经常为个人使用创建软件包? @Ari RStudio 让创建另一个包变得超级容易。 Devtools 可以轻松加载非 CRAN 包(load_all
用于本地文件,install_github
用于 Github 文件)。 taRifx
和 taRifx.geo
基本上是我为自己一次性使用而编写的函数的积累。【参考方案4】:
根据我的经验,包将是个人功能的最佳选择。首先,我将所有新功能放入一个个人包中,我将其命名为 My。当我发现一些功能相似并且值得成为一个独立的包时,我会创建一个新的包并移动它们。
【讨论】:
以上是关于在 R 中处理个人功能的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章