3

R で実質的な組織全体のコード ベースを構築している場合、データ変更タスクの既定のアプローチとして sqldf パッケージに依存することは許容されるでしょうか? それとも、可能であれば R 固有の構文を使用した操作に依存するのがベスト プラクティスですか? sqldf に依存することにより、かなりの量の異なる構文 SQL が R コード ベースに導入されます。

保守性とスタイルに特に関連して、この質問をしています。既存の 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 倍高速に実行される可能性のある 1 つの関数にボトルネックが存在する可能性がありますdplyr。両方でコードをプロファイリングしてテストできます。

コードを分岐して、リビジョン管理システム (RCS を使用していますよね?) に分岐と分岐を持ち、勝者が得られるまで並行して作業することもできますsqldfdplyr

コードベースが十分に文書化され、テストされている場合、保守性の観点から R コードに他の構文を導入するかどうかは、正直なところ問題ではありません。

于 2014-02-08T12:26:25.387 に答える