快速让你的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)

04-18 19:12