3

如果一个人在 R 中构建一个实质性的、组织范围的代码库,依赖 sqldf 包作为数据处理任务的默认方法是否可以接受?还是在可能的情况下依赖具有 R 特定语法的操作的最佳实践?通过依赖 sqldf,我们在他们的 R 代码库中引入了大量不同的语法 SQL。

我问这个问题是关于可维护性和风格的。我搜索了现有的 R 风格指南,但没有找到关于这个主题的任何内容。

编辑:为了澄清我关心的工作流程,考虑一个充分利用 sqldf 的数据处理脚本,如下所示:

library(sqldf)
gclust_group<-sqldf("SELECT clust,SUM(trips) AS trips2
                FROM gclust
                GROUP BY clust")

gclust_group2<-sqldf("SELECT g.*, h.Longitude,h.Latitude,h.withinss, s.trips2
                 FROM highestd g
                 LEFT JOIN centers h
                 ON g.clust=h.clust
                 LEFT JOIN gclust_group s
                 ON g.clust=s.clust")

这样的脚本可以持续多行。(对于那些熟悉 Hadoop 和 PIG 的人来说,风格实际上类似于 PIG 脚本)。大部分工作都是使用 SQL 语法完成的,尽管这样做有利于避免复杂的子查询。

4

1 回答 1

3

编写函数。具有描述其用途的清晰名称的函数。记录它们。编写测试。

函数是否包含sqldf部分,或使用dplyr,或使用裸 R 代码,或调用Rcpp在那个级别是无关紧要的。

但是如果你想尝试改变一些东西,sqldf重要dplyr的是你有一个稳定的平台可以进行实验,这意味着定义良好的功能和一组良好的测试。如果您使用 100 倍的速度执行某个功能,可能存在瓶颈dplyr?太好了,您可以使用两者来分析和测试代码。

您甚至可以分支您的代码,并在您的版本控制系统中拥有一个sqldf分支和一个dplyr分支(您使用的是 RCS,对吗?)并并行工作,直到您获得胜利。

老实说,如果您的代码库有良好的文档记录和测试,那么从可维护性的角度来看,您是否将其他语法位引入您的 R 代码并不重要。

于 2014-02-08T12:26:25.387 回答