如果在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语法完成的,尽管有避免复杂子查询的好处。
答案 0 :(得分:3)
写功能。具有明确名称的功能描述其目的。记录它们。写测试。
函数是否包含sqldf
部分,或使用dplyr
,或使用裸R代码,或调用Rcpp
是否与此级别无关。
但是,如果您想尝试将某些内容从sqldf
更改为dplyr
,重要的是您有一个可以进行实验的稳定平台,这意味着明确定义的功能和一组良好的测试。也许在一个函数中存在瓶颈,如果使用dplyr
执行此操作可能会快100倍?太棒了,你可以用两者来描述和测试代码。
您甚至可以分支您的代码并在您的修订控制系统中拥有sqldf
分支和dplyr
分支(您使用的是RCS,对吧?)并且并行工作直到获得胜利
如果你的代码库有充分的文档和测试,那么从可维护性角度介绍R代码中的其他语法并不重要。