1. ホーム
  2. r

[解決済み] Rの変数名の付け方について教えてください。[クローズド]

2022-05-14 10:51:37

質問

Rコードにおける変数や関数の命名規則について、あなたはどのようなものが好きですか?

私が知る限り、いくつかの異なる規則があり、それらはすべて不協和音を奏でながら共存しています。

1. ピリオドセパレータの使用、例.

  stock.prices <- c(12.01, 10.12)
  col.names    <- c('symbol','price')

長所 Rコミュニティでの歴史的な前例があり、Rコア全体に浸透している。 Google の R スタイルガイド .

Cons: オブジェクト指向の意味合いが強く、Rの初心者には分かりにくい。

2. アンダースコアの使用

  stock_prices <- c(12.01, 10.12)
  col_names    <- c('symbol','price')

長所 多くのプログラミング言語における一般的な規約。 Hadley Wickham のスタイルガイド で好まれ、ggplot2やplyrパッケージで使用されています。

短所。 Emacs-Speaks-Statisticsの'<-'演算子にマッピングされます('ess-toggle-underscore'で変更可能です)。

3. 混合大文字の使用 (camelCase)

  stockPrices <- c(12.01, 10.12)
  colNames    <- c('symbol','price')

長所 いくつかの言語コミュニティで広く採用されているようです。

短所。 最近の前例があるが、歴史的に使われていない(Rのベースまたはそのドキュメントのいずれかで)。

最後に、まだ十分に混乱していないかのように、Google スタイルガイドでは、変数のドット表記を主張していますが、関数の場合は大文字と小文字が混在していることを指摘しなければなりません。

R パッケージ間で一貫したスタイルがないことは、いくつかのレベルで問題があります。 開発者の立場からは、他のコードを保守および拡張することが難しくなります (特に、そのスタイルが自分のスタイルと一貫していない場合)。Rユーザーの立場からすると、構文に一貫性がないため、ある概念を表現する方法が増えて、Rの学習曲線が急カーブになってしまいます(例えば、その日付キャスト関数はasDate()、as.date()、as_date()のどれですか? いいえ、as.Date() です)。

どのように解決するのですか?

以前の回答が良かったので、ここに少し追加します。

  • アンダースコアは 本当に ESS がかなり広く使われていることを考えると、ESS ユーザーによって書かれたコードで多くのアンダースコアを見ることはないでしょう(そしてそのセットには R Core と CRAN の作者が多く含まれており、Hadley のような例外は別として)。

  • ドットは、単純なメソッド ディスパッチで混同される可能性があるため、悪でもあります。私はかつて、R リストの 1 つでこの趣旨のコメントを読んだと思います。

  • というわけで、最終ラウンドではまだ明確な勝者が残っています: camelCase です。また、私は「Rコミュニティの先例を欠いている」という主張に本当に同意しているかどうかわかりません。

そして、そうです: 実践主義と一貫性は教義に勝ります。ですから、同僚や共著者によって使用され、機能するものであれば何でも構いません。 結局のところ、私たちにはまだ議論すべきホワイトスペースと中括弧があるのです。)