快速让你的R代码变得漂亮易读
1. 一般性规则
-
尽量避免使用attach
-
Error应该使用Stop来停止
-
S3和S4的函数不要一起使用
2. 命名
-
文件名,以 .R结尾,赋予意义 e.g.:predict_ad_revenue.R
-
变量名,小写字母以点号分割 e.g.:avg.clicks
-
函数名,大写字母不使用点号 e.g.:CalculateAvgClicks (最好使用动词)
-
常数名,类似函数名以k开头 e.g. : kConstantName
3. 语法
-
单行长度:不要超过80个字符
-
缩进:用两个空格进行缩进,避免使用Tab键,或者混用
-
字符间隔:二元运算(=,+,-,<-,等)前后加空格;逗号,前不加,后加
(函数中用=调用参数时例外)
e.g. : tab.prior <- table(df[df$days < 0, "campaign.id"])
前括号前加一个空格, 函数调用时除外
e.g. : if (debug)
如果多加空格可以使代码对齐,那么多加是可以的
-
花括号:前括号不需要独占一行,后括号则应当独占一行
另起一行写代码主体
else语句要与花括号同行
e.g. : if (condition) {
one or more lines
} else {
one or more lines
}
-
赋值:使用“<-”,而不使用“=”
e.g.: x <- 5
-
分号:不要使用分号结束一行命令,或者用分号在一行写多行命令
4. 代码组织
-
总体布局与顺序
如果所有人都以相同顺序安排代码内容, 就可以更加轻松快速阅读他人脚本
i. 版权声明
ii. 作者信息
iii. 文件说明, 包括程序的目的,输入以及输出
iv. source() 和 library() 说明
v. 函数定义
vi. 可执行语句, 如果有的话 (例如, print, plot)
单元测试应在另一个独立的的文件_unittest.R 中进行
-
注释:
注释行以 # 开头,后加一个空格
代码行内短注释需要在代码后面空两格,然后 # ,再加一个空格
-
函数定义和调用
函数定义应先列出无默认值的参数, 再列出有默认值参数
允许每行写多个参数; 换行只允许在赋值语句外进行
e.g.: PredictCTR <- function(query, property, num.days,
show.plot = TRUE)