編程的代碼規(guī)范目的是使我們的R代碼更容易閱讀、分享和驗(yàn)證菠红,下述是一些約定俗成的代碼規(guī)范:
1.0 文件名
對(duì)于R file名字的命名尚骄,一般采用一些有意義的名字來(lái)命名,不要有特殊字符和空格毙死,但是要注意大小寫(特別是windowws系統(tǒng)是不管大小寫的)燎潮,所以最好就小寫就行了;R代碼就放在.R文件中扼倘,而R數(shù)據(jù)文件則放在.RData文件中确封。我一般不用下劃線分割文件名,而是使用大小寫交替的方式
GOOD: predict_ad_revenue.R; PredictAdRevenue.R
BAD: foo.R
2.0 標(biāo)識(shí)符(Identifiers)
不要使用下劃線(_)或連字符(-)標(biāo)識(shí)符再菊。標(biāo)識(shí)符應(yīng)按照以下命名約定爪喘。變量名的首選形式都是小寫字母和單詞分開用點(diǎn)(variable.name),但也接受variableName;函數(shù)名使用首字母大寫而不用點(diǎn)(FunctionName);
variable.name is preferred, variableName is accepted
GOOD: avg.clicks
OK: avgClicks
BAD: avg_Clicks
FunctionName
GOOD: CalculateAvgClicks
BAD: calculate_avg_clicks , calculateAvgClicks
Make function names verbs.
Exception: When creating a classed object, the function name
3.0 間距(Spacing)
當(dāng)使用所有二進(jìn)制運(yùn)算符(如=,+,-,<,等)在兩端空格。例外:當(dāng)符號(hào) = 是函數(shù)調(diào)用時(shí)的傳遞參數(shù)周圍不用空格隔開纠拔。
不要在符號(hào)“秉剑,”前空格隔開,但需要在“绿语,”后添加空格
good style
tab.prior <- table(df[df$days.from.opt < 0, "campaign.id"])
total <- sum(x[, 1])
total <- sum(x[1, ])123
bad style
tab.prior <- table(df[df$days.from.opt<0, "campaign.id"]) # Needs spaces around '<'
tab.prior <- table(df[df$days.from.opt < 0,"campaign.id"]) # Needs a space after the comma
tab.prior<- table(df[df$days.from.opt < 0, "campaign.id"]) # Needs a space before <
tab.prior<-table(df[df$days.from.opt < 0, "campaign.id"]) # Needs spaces around <
total <- sum(x[,1]) # Needs a space after the comma
total <- sum(x[ ,1]) # Needs a space after the comma, not before123456
4.0 花括號(hào)(Curly braces)
前括號(hào)永遠(yuǎn)不應(yīng)該獨(dú)占一行; 后括號(hào)應(yīng)當(dāng)總是獨(dú)占一行. 在代碼塊只含單個(gè)語(yǔ)句時(shí)可省略花括號(hào)
if (is.null(ylim)) {
ylim <- c(0, 0.06)
}
5.0 賦值
使用<-進(jìn)行賦值, 不用=賦值.
6.0 注釋
整行注釋應(yīng)以#后接一個(gè)空格開始秃症,行內(nèi)短注釋應(yīng)在代碼后接兩個(gè)空格, #, 再接一個(gè)空格。
# Create histogram of frequency of campaigns by pct budget spent.
hist(df$pct.spent,
breaks = "scott", # method for choosing number of buckets
main = "Histogram: fraction budget spent by campaignid",
xlab = "Fraction of budget spent",
ylab = "Frequency (count of campaignids)")
7.0 函數(shù)的定義和調(diào)用
函數(shù)定義應(yīng)首先列出無(wú)默認(rèn)值的參數(shù), 然后再列出有默認(rèn)值的參數(shù)吕粹。函數(shù)定義和函數(shù)調(diào)用中, 允許每行寫多個(gè)參數(shù); 折行只允許在賦值語(yǔ)句外進(jìn)行种柑。
8.0 分號(hào)
不要以分號(hào)結(jié)束一行, 也不要利用分號(hào)在同一行放多于一個(gè)命令. (分號(hào)是毫無(wú)必要的, 并且為了與其他Google編碼風(fēng)格指南保持一致, 此處同樣略去. )(分號(hào)作為語(yǔ)句結(jié)束標(biāo)識(shí),雖然不規(guī)范匹耕,但是在縮短文檔長(zhǎng)度的時(shí)候我會(huì)選擇使用...)