在 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 文件)。 taRifxtaRifx.geo 基本上是我为自己一次性使用而编写的函数的积累。【参考方案4】:

根据我的经验,包将是个人功能的最佳选择。首先,我将所有新功能放入一个个人包中,我将其命名为 My。当我发现一些功能相似并且值得成为一个独立的包时,我会创建一个新的包并移动它们。

【讨论】:

以上是关于在 R 中处理个人功能的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

使用 WantsFullScreenLayout 应用程序处理扩展高度状态栏的最佳实践?

基于WPS的Word最佳实践系列(图片的基本处理)

点对点支付处理的当前最佳实践/选项

XAML: 自定义控件中事件处理的最佳实践

在应用程序中存储个人资料图像的最佳实践

在项目/解决方案中编写/组织azure函数的最佳实践