1.一般性規(guī)則
(1)避免使用attach。
(2)寫函數(shù)時盡量少的使用stop()。
(3)定義S3和S4的對象不要混在一起使用。
2.文件命名
(1)文件名應(yīng)以.R結(jié)尾,文件名本身要有意義,如:predict_ad_revenue.R。
(2)R代碼就放在.R文件中,而R數(shù)據(jù)文件則放在.RData文件中。
3.變量名和函數(shù)命名規(guī)則
注意,在R環(huán)境下,大小寫是敏感的。
1.變量名應(yīng)都用小寫字母,單詞間用.分隔。
2.函數(shù)名的每個單詞用大寫字母開頭,不用.連接。
3.常數(shù)項與函數(shù)命名規(guī)則一致,但以小寫k開頭。
以下舉例說明:
變量:avg.clicks;
函數(shù)名:CalculateAvgClicks用動詞命名函數(shù);
常數(shù)項:kConstantName。
4.R語句
(1)單行長度
每行最長80個字符。
(2)縮進(jìn)
使用兩個空格來縮進(jìn)代碼,不要使用制表符或混合使用二者。
(3)空格
1.在所有二次運算符(=,+,-,<-,等)的兩側(cè)加上空格。
2.不可在逗號前加空格,逗號后必須加空格。
例如:tabPrior <- table(df[df$daysFromOpt < 0, "campaignid"])
3.括號左邊用空格,調(diào)用函數(shù)時除外。例如:if (debug)。
4.可以多使用空格(一行中有多個空格),如果這能夠改善符號間的對齊。
圓括號或方括號內(nèi)的代碼兩側(cè)不要加空格,逗號后面除外。
(4)花括號
1.開始的{不能單獨成行,結(jié)束的}必須單獨成行,如:
if (is.null(ylim)) {
ylim <- c(0, 0.06)
}
2.單獨的一個語句應(yīng)從新的一行開始。
(5)賦值
使用 <- 進(jìn)行賦值,不用 = 賦值。
5.代碼組織
如果是做項目或者多人合作,便于所有人都能快速閱讀并理解他人的腳本,以下信息是必須有的:
a)版權(quán)聲明注釋
b)作者信息注釋
c)文件說明注釋(包括程序的用途,輸入,輸出)
d)source()和library()語句說明
e)函數(shù)定義
6.注釋
開發(fā)工程師應(yīng)養(yǎng)成良好的注釋習(xí)慣。
整行注釋以 # 開頭,加一個空格,如:# Create histogram of frequency。
行內(nèi)短注釋需要在代碼后面空兩格,然后 # ,再加一個空格,如:
hist(df$pctSpent,
breaks = "scott", # method for choosing number of buckets
x = "Frequency (count of campaignids)")
7.函數(shù)定義與調(diào)用
函數(shù)定義應(yīng)首先列出無默認(rèn)值的參數(shù),然后再列出有默認(rèn)值的參數(shù)。
在函數(shù)定義和調(diào)用時,允許每行寫多個參數(shù),一般只在賦值時才換行。如:
PredictCTR <- function(query, property, numDays,
showPlot = TRUE)
在函數(shù)的定義行下方應(yīng)當(dāng)緊接一個注釋區(qū),包括:
-描述函數(shù)的作用
-描述函數(shù)的參數(shù)列表,用Args:對每個參數(shù)進(jìn)行描述(包括數(shù)據(jù)類型)
-描述返回值,用Returns:
注釋部分應(yīng)盡可能詳細(xì)充分,以便調(diào)用者在不閱讀代碼時就能使用該函數(shù)。