Google's R Style Guide
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
SIZE(25){Google's R Style Guide}
#contents
~
- コメントなどあれば。 -- &new{2009-09-01 (火) 15:08:34};
#comment
~
Rは主に統計計算、グラフィックスに使われる高水準プログラム...
* 概要: Rスタイルルール [#m8e7032a]
+ファイル名: 拡張子は .R
+識別子: 変数 variable.name, 関数 FunctionName, 定数 kCon...
+一行の文字数: 最大80文字
+空白
+中括弧({}): 開き({)は同じ行に、閉じ(})はそれだけを一行に。
+代入: <-を使う。=は使わない。
+セミコロン; 使わない。(一行にはひとつの文(式)のみとい...
+全体のレイアウトと記述順序
+コメント: #の後にスペースを入れて開始する。インラインの...
+関数定義と呼び出し
+関数の説明
+関数の例
+TODOのスタイル: TODO(ユーザ名)
* 概要: R言語ルール [#r263d871]
+attach: 使うな。
+関数: エラーの生成にはstop()を使うこと。
+オブジェクトとメソッド: S4オブジェクトとメソッドは可能な...
* 1.表記と命名 [#ta8c0a0c]
** ファイル名 [#wb6d246d]
ファイル名の拡張子は.Rで、意味のある名前を付けること。
GOOD: predict_ad_revenue.R
BAD: foo.R
** 識別子 [#a29f8974]
識別子にアンダースコアとハイフンを使うな。識別子は以下の...
- 変数名
GOOD: avg.clicks
BAD: avg_Clicks , avgClicks
- 関数名
GOOD: CalculateAvgClicks
BAD: calculate_avg_clicks , calculateAvgClicks
関数名は動詞にすること。~
'''例外: クラス化されたオブジェクトを作るとき、関数名(コ...
- 定数名
kConstantName
* 2.シンタックス [#n316fdc9]
** 一行の長さ [#x10765e0]
最大80文字。
** インデント [#i6b95187]
インデントには2つのスペースを用いること。タブを使ったり、...
'''例外: 小括弧内に改行があるとき、小括弧内の最初の文字と...
** スペース [#p3070dde]
全ての2項演算子(=, +, -, <-など)の前後にスペースを入れる...
'''例外: 関数呼び出しでパラメータを渡すときには、=の前後...
コンマの前にスペースは入れず、コンマの後に1個のスペースを...
GOOD:
tabPrior <- table(df[df$daysFromOpt < 0, "campaignid"])
total <- sum(x[, 1])
total <- sum(x[1, ])
BAD:
tabPrior <- table(df[df$daysFromOpt<0, "campaignid"]) #...
tabPrior <- table(df[df$daysFromOpt < 0,"campaignid"]) ...
tabPrior<- table(df[df$daysFromOpt < 0, "campaignid"]) ...
tabPrior<-table(df[df$daysFromOpt < 0, "campaignid"]) #...
total <- sum(x[,1]) # コンマの後にスペース
total <- sum(x[ ,1]) # コンマの前ではなく後にスペース
関数呼び出し以外では、開き括弧の前にスペースを入れること。
GOOD:
if (debug)
BAD:
if(debug)
=や<-を整列するためなら、2個以上のスペースを入れてもよい。
plot(x = xCoord,
y = dataMat[, makeColName(metric, ptiles[1], "ro...
ylim = ylim,
xlab = "dates",
ylab = metric,
main = (paste(metric, " for 3 samples ", sep="")))
小括弧や大括弧の中のコードの前後にスペースは入れない。~
'''例外: コンマの後には常にスペースを入れる。'''
GOOD:
if (debug)
x[1, ]
BAD:
if ( debug ) # debugの前後にスペースは入れない。
x[1,] # コンマの後にスペース。
** 中括弧 [#n96cb8fd]
開き中括弧({)はそれ自身を一行にしないこと。閉じ中括弧はそ...
if (is.null(ylim)) {
ylim <- c(0, 0.06)
}
あるいは (↑と↓を混ぜて使ってはいけない)
if (is.null(ylim))
ylim <- c(0, 0.06)
ブロック本体は常に新しい行で始めること。
BAD:
if (is.null(ylim)) ylim <- c(0, 0.06)
if (is.null(ylim)) {ylim <- c(0, 0.06)}
** 代入 [#f653845b]
代入には=ではなく<-を使うこと。
GOOD:
x <- 5
BAD:
x = 5
** セミコロン [#h680040e]
行の終端にセミコロンを置かない。2個以上の命令を1行に書く...
* 3.コードの構成 [#cca2fb12]
** 全体のレイアウトと記述順序 [#m33c1c21]
みんなが同じレイアウトを用いれば、お互いのスクリプトをよ...
+コピーライト情報
+著者情報
+ファイルの内容(プログラムの目的、入出力の説明を含む)
+source() と library() 命令
+関数定義
+もしあれば、実行命令 (例えば print, plot)
単体テストはoriginalfilename_unittest.R(オリジナルファイ...
** コメント [#j6ec5931]
コードにはコメントを。コメント行は#と1個のスペースで開始...
短いコメントは、コードの後に2個のスペース、#、1個のスペー...
# Create histogram of frequency of campaigns by pct budg...
hist(df$pctSpent,
breaks = "scott", # method for choosing number of ...
main = "Histogram: fraction budget spent by campa...
xlab = "Fraction of budget spent",
ylab = "Frequency (count of campaignids)")
** 関数定義と呼び出し [#q0b104d5]
関数定義では、最初に既定値のない引数、その後に既定値のあ...
関数定義と関数呼び出しの両方で、一行に複数の引数を記述し...
GOOD:
PredictCTR <- function(query, property, numDays,
showPlot = TRUE)
BAD:
PredictCTR <- function(query, property, numDays, showPlo...
TRUE)
理想的には、単体テストは関数呼び出しのサンプルとして使え...
** 関数の説明 [#d647a66b]
関数にはコメントを。コメントセクションは関数定義の直後の...
** 関数の例 [#d88f474c]
CalculateSampleCovariance <- function(x, y, verbose = TR...
# Computes the sample covariance between two vectors. ...
#
# Args:
# x: One of two vectors whose sample covariance is t...
# y: The other vector. x and y must have the same le...
# with no missing values.
# verbose: If TRUE, prints sample covariance; if not...
#
# Returns:
# The sample covariance between x and y. (xとyの間の...
n <- length(x)
# Error handling (エラー処理)
if (n <= 1 || n != length(y)) {
stop("Arguments x and y have invalid lengths: ", # ...
length(x), " and ", length(y), ".")
}
if (TRUE %in% is.na(x) || TRUE %in% is.na(y)) {
stop(" Arguments x and y must not have missing value...
}
covariance <- var(x, y)
if (verbose)
cat("Covariance = ", round(covariance, 4), ".\n", se...
return(covariance)
}
** TODOのスタイル [#j6b08dfa]
コードの中では一貫したTODOのスタイルを用いること。
TODO(ユーザ名): 行うべきことの明確な記述
* 4. 言語 [#a09a9108]
** Attach [#qf4c0ad8]
attachは使うな。使うとエラーを起こしやすくなる。
** 関数 [#e0cbbafd]
エラーの生成にはstop()を使うこと。
** オブジェクトとメソッド [#v1c37e64]
S言語にはS3とS4というふたつのオブジェクトシステムがあり、...
S4システムを使う強い理由がない限り、S3システムを使うこと...
S3システムをS4システムを混ぜて使うな。S4メソッドはS3の継...
* 5.例外 [#k10a0cdd]
理由がない限りは、以上のスタイルを守るべき。古いコード、...
* 6.終わりに [#e3fc8415]
良識を持ち、また一貫性を保ちなさい。
もしあなたが今コードを書いているなら、少しの間コードを見...
もし他人がif節の前後にスペースを入れているなら、あなたも...
もし他人のコメントがスターで囲まれているなら、あなたもそ...
スタイルガイドに従うということは、コーディングの共通言語...
ここで私たちがグローバルなスタイルルールを示したので、み...
もし(私たちが示したグローバルなスタイルに従って)ファイ...
これは避けなさい。
OK.コードの書き方についてはもう十分でしょう。
コードを書く方が遙かに楽しいでしょうから。
さあ、楽しみなさい!
* 7.参考文献 [#gfec2080]
-http://www.maths.lth.se/help/R/RCC/ - R Coding Conventio...
-http://ess.r-project.org/ - emacsユーザ用。essによってR...
終了行:
SIZE(25){Google's R Style Guide}
#contents
~
- コメントなどあれば。 -- &new{2009-09-01 (火) 15:08:34};
#comment
~
Rは主に統計計算、グラフィックスに使われる高水準プログラム...
* 概要: Rスタイルルール [#m8e7032a]
+ファイル名: 拡張子は .R
+識別子: 変数 variable.name, 関数 FunctionName, 定数 kCon...
+一行の文字数: 最大80文字
+空白
+中括弧({}): 開き({)は同じ行に、閉じ(})はそれだけを一行に。
+代入: <-を使う。=は使わない。
+セミコロン; 使わない。(一行にはひとつの文(式)のみとい...
+全体のレイアウトと記述順序
+コメント: #の後にスペースを入れて開始する。インラインの...
+関数定義と呼び出し
+関数の説明
+関数の例
+TODOのスタイル: TODO(ユーザ名)
* 概要: R言語ルール [#r263d871]
+attach: 使うな。
+関数: エラーの生成にはstop()を使うこと。
+オブジェクトとメソッド: S4オブジェクトとメソッドは可能な...
* 1.表記と命名 [#ta8c0a0c]
** ファイル名 [#wb6d246d]
ファイル名の拡張子は.Rで、意味のある名前を付けること。
GOOD: predict_ad_revenue.R
BAD: foo.R
** 識別子 [#a29f8974]
識別子にアンダースコアとハイフンを使うな。識別子は以下の...
- 変数名
GOOD: avg.clicks
BAD: avg_Clicks , avgClicks
- 関数名
GOOD: CalculateAvgClicks
BAD: calculate_avg_clicks , calculateAvgClicks
関数名は動詞にすること。~
'''例外: クラス化されたオブジェクトを作るとき、関数名(コ...
- 定数名
kConstantName
* 2.シンタックス [#n316fdc9]
** 一行の長さ [#x10765e0]
最大80文字。
** インデント [#i6b95187]
インデントには2つのスペースを用いること。タブを使ったり、...
'''例外: 小括弧内に改行があるとき、小括弧内の最初の文字と...
** スペース [#p3070dde]
全ての2項演算子(=, +, -, <-など)の前後にスペースを入れる...
'''例外: 関数呼び出しでパラメータを渡すときには、=の前後...
コンマの前にスペースは入れず、コンマの後に1個のスペースを...
GOOD:
tabPrior <- table(df[df$daysFromOpt < 0, "campaignid"])
total <- sum(x[, 1])
total <- sum(x[1, ])
BAD:
tabPrior <- table(df[df$daysFromOpt<0, "campaignid"]) #...
tabPrior <- table(df[df$daysFromOpt < 0,"campaignid"]) ...
tabPrior<- table(df[df$daysFromOpt < 0, "campaignid"]) ...
tabPrior<-table(df[df$daysFromOpt < 0, "campaignid"]) #...
total <- sum(x[,1]) # コンマの後にスペース
total <- sum(x[ ,1]) # コンマの前ではなく後にスペース
関数呼び出し以外では、開き括弧の前にスペースを入れること。
GOOD:
if (debug)
BAD:
if(debug)
=や<-を整列するためなら、2個以上のスペースを入れてもよい。
plot(x = xCoord,
y = dataMat[, makeColName(metric, ptiles[1], "ro...
ylim = ylim,
xlab = "dates",
ylab = metric,
main = (paste(metric, " for 3 samples ", sep="")))
小括弧や大括弧の中のコードの前後にスペースは入れない。~
'''例外: コンマの後には常にスペースを入れる。'''
GOOD:
if (debug)
x[1, ]
BAD:
if ( debug ) # debugの前後にスペースは入れない。
x[1,] # コンマの後にスペース。
** 中括弧 [#n96cb8fd]
開き中括弧({)はそれ自身を一行にしないこと。閉じ中括弧はそ...
if (is.null(ylim)) {
ylim <- c(0, 0.06)
}
あるいは (↑と↓を混ぜて使ってはいけない)
if (is.null(ylim))
ylim <- c(0, 0.06)
ブロック本体は常に新しい行で始めること。
BAD:
if (is.null(ylim)) ylim <- c(0, 0.06)
if (is.null(ylim)) {ylim <- c(0, 0.06)}
** 代入 [#f653845b]
代入には=ではなく<-を使うこと。
GOOD:
x <- 5
BAD:
x = 5
** セミコロン [#h680040e]
行の終端にセミコロンを置かない。2個以上の命令を1行に書く...
* 3.コードの構成 [#cca2fb12]
** 全体のレイアウトと記述順序 [#m33c1c21]
みんなが同じレイアウトを用いれば、お互いのスクリプトをよ...
+コピーライト情報
+著者情報
+ファイルの内容(プログラムの目的、入出力の説明を含む)
+source() と library() 命令
+関数定義
+もしあれば、実行命令 (例えば print, plot)
単体テストはoriginalfilename_unittest.R(オリジナルファイ...
** コメント [#j6ec5931]
コードにはコメントを。コメント行は#と1個のスペースで開始...
短いコメントは、コードの後に2個のスペース、#、1個のスペー...
# Create histogram of frequency of campaigns by pct budg...
hist(df$pctSpent,
breaks = "scott", # method for choosing number of ...
main = "Histogram: fraction budget spent by campa...
xlab = "Fraction of budget spent",
ylab = "Frequency (count of campaignids)")
** 関数定義と呼び出し [#q0b104d5]
関数定義では、最初に既定値のない引数、その後に既定値のあ...
関数定義と関数呼び出しの両方で、一行に複数の引数を記述し...
GOOD:
PredictCTR <- function(query, property, numDays,
showPlot = TRUE)
BAD:
PredictCTR <- function(query, property, numDays, showPlo...
TRUE)
理想的には、単体テストは関数呼び出しのサンプルとして使え...
** 関数の説明 [#d647a66b]
関数にはコメントを。コメントセクションは関数定義の直後の...
** 関数の例 [#d88f474c]
CalculateSampleCovariance <- function(x, y, verbose = TR...
# Computes the sample covariance between two vectors. ...
#
# Args:
# x: One of two vectors whose sample covariance is t...
# y: The other vector. x and y must have the same le...
# with no missing values.
# verbose: If TRUE, prints sample covariance; if not...
#
# Returns:
# The sample covariance between x and y. (xとyの間の...
n <- length(x)
# Error handling (エラー処理)
if (n <= 1 || n != length(y)) {
stop("Arguments x and y have invalid lengths: ", # ...
length(x), " and ", length(y), ".")
}
if (TRUE %in% is.na(x) || TRUE %in% is.na(y)) {
stop(" Arguments x and y must not have missing value...
}
covariance <- var(x, y)
if (verbose)
cat("Covariance = ", round(covariance, 4), ".\n", se...
return(covariance)
}
** TODOのスタイル [#j6b08dfa]
コードの中では一貫したTODOのスタイルを用いること。
TODO(ユーザ名): 行うべきことの明確な記述
* 4. 言語 [#a09a9108]
** Attach [#qf4c0ad8]
attachは使うな。使うとエラーを起こしやすくなる。
** 関数 [#e0cbbafd]
エラーの生成にはstop()を使うこと。
** オブジェクトとメソッド [#v1c37e64]
S言語にはS3とS4というふたつのオブジェクトシステムがあり、...
S4システムを使う強い理由がない限り、S3システムを使うこと...
S3システムをS4システムを混ぜて使うな。S4メソッドはS3の継...
* 5.例外 [#k10a0cdd]
理由がない限りは、以上のスタイルを守るべき。古いコード、...
* 6.終わりに [#e3fc8415]
良識を持ち、また一貫性を保ちなさい。
もしあなたが今コードを書いているなら、少しの間コードを見...
もし他人がif節の前後にスペースを入れているなら、あなたも...
もし他人のコメントがスターで囲まれているなら、あなたもそ...
スタイルガイドに従うということは、コーディングの共通言語...
ここで私たちがグローバルなスタイルルールを示したので、み...
もし(私たちが示したグローバルなスタイルに従って)ファイ...
これは避けなさい。
OK.コードの書き方についてはもう十分でしょう。
コードを書く方が遙かに楽しいでしょうから。
さあ、楽しみなさい!
* 7.参考文献 [#gfec2080]
-http://www.maths.lth.se/help/R/RCC/ - R Coding Conventio...
-http://ess.r-project.org/ - emacsユーザ用。essによってR...
ページ名: