R语言学习之<代码规范>

转载 2015年11月17日 19:43:55

R语言的代码规范

R作为一个高级程序语言主要是用来统计计算和做图。对R语言代码进行规范便于代码的易于阅读、分享和验证。下面这些规范整理自google的R社区共同讨论的结果(Google'sR Style Guide)

 

1、一般性规则

避免使用attach

写函数是尽量少的使用stop()

定义S3和S4的对象不要混在一起使用

 

2、文件命名

以.r结束文件,尽可能的增加信息在文件名里面,比如

Good:

predict_ad_revenue.R

Bad:

foo.R

 

3、变量名和函数命名规则

注意,在R环境下,大小写是敏感的。变量名应该都用小写字母,单词间用.分隔;函数名用每个单词用大写字母开头,不用.连接。常数项跟函数一样命名但以小k开头。

变量:

Good:

avg.clicks

Bad:

avg_Clicks, avgClicks

函数名:

Good:

CalculateAvgClicks

Bad:

calculate_avg_clicks, calculateAvgClicks

用动词命名函数

常数项:kConstantName

 

4、R语句

这个可能是最快的,使代码外观变”漂亮”的规则了

每行最长80个字符。

代码缩进时,空两格。

二次运算符(=,+,-,<-,等)两端用空格。

逗号前不用空格,但逗号后一定得用。

GOOD:

tabPrior <- table(df[df$daysFromOpt< 0, "campaignid"])

total <- sum(x[, 1])

total <- sum(x[1, ])

BAD:

tabPrior <-table(df[df$daysFromOpt<0,"campaignid"])  # Needs spaces around'<'

tabPrior <- table(df[df$daysFromOpt< 0,"campaignid"])  # Needs a spaceafter the comma

tabPrior<- table(df[df$daysFromOpt< 0, "campaignid"])  # Needs aspace before <-

tabPrior<-table(df[df$daysFromOpt< 0, "campaignid"])  # Needs spacesaround <-

total <- sum(x[,1])  # Needs aspace after the comma

total <- sum(x[ ,1])  # Needs aspace after the comma, not before

 

这里包含了赋值、逻辑符号以及逗点分隔。

# 在R里面尽量少用 =

括号左边用空格,调用函数时除外。

Good:

if (debug)

Bad:

if(debug)

 

可以有多余的空格(一行中有多个空格),如果这能够改善符号间的对齐。

plot(x    =xCoord,

       = dataMat[,makeColName(metric, ptiles[1], "roiOpt")],

    ylim = ylim,

    xlab = "dates",

    ylab = metric,

    main = (paste(metric, " for 3 samples ", sep="")))


括号或方括号内不用空格,逗号后面除外。

GOOD:

if (debug)

x[1, ]

BAD:

if ( debug )  # No spaces around debug

x[1,]  # Needs a space after the comma

 

大括号{ 开始的{不能单独成行,结束的}必须单独成行。

 

单独的一个语句应从新的一行开始。

BAD:

if (is.null(ylim)) ylim <- c(0, 0.06)

if (is.null(ylim)) {ylim <- c(0, 0.06)}

 

5、代码组织

尤其是做项目的话,以下信息是必须有的:

版权声明

作者注释

文件说明,项目目的,输入和输出的说明

source() 和 library() 说明

函数定义

其他

 

6、注释

养成良好的注释习惯

单行注释以 # 开头,加一个空格

短注释需要在代码后面空两格,然后 # ,再加一个空格

# Create histogram of frequency of campaigns by pct budgetspent.

hist(df$pctSpent,

    breaks = "scott",  # method for choosing number ofbuckets

    main   = "Histogram: fractionbudget spent by campaignid",

    xlab   = "Fraction of budgetspent",

    ylab   = "Frequency (count ofcampaignids)")


7、函数定义与调用

函数定义应该先列出语句中没有默认值,然后是默认值。在函数定义和调用时,允许每行多个语句,一般只是在赋值时才换行。

GOOD:

PredictCTR <- function(query, property,numDays,

                      showPlot= TRUE)

BAD:

PredictCTR <- function(query, property, numDays,showPlot =

                      TRUE)

 

8、 函数归档

应该在函数定义的下一行进行注释,包括描述函数的作用;描述语句中的参数用Args:描述数据类型;描述返回值用Returns:。注释部分应尽可能详细,以便读者再不看代码时就能应用该函数。比如:

Example Function

CalculateSampleCovariance <- function(x, y,verbose = TRUE) {

  # Computes the sample covariance between twovectors.

  #

  # Args:

   x: Oneof two vectors whose sample covariance is to be calculated.

   y: Theother vector. x and y must have the same length, greater thanone,

     with no missing values.

  verbose: If TRUE, prints sample covariance; if not, not. Default isTRUE.

  #

  # Returns:

   Thesample covariance between x and 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 values.")

  }

  covariance <- var(x, y)

  if (verbose)

   cat("Covariance = ", round(covariance, 4), ".\n", sep = "")

  return(covariance)

}

 

9、任务间代码风格应保持一致

TODO(username): Explicit description of action to be taken

R语言-代码规范(Google's R Style Guide)

R是一个高级编程语言主要用于统计计算和图形。R编程风格指南的目标是使我们的R代码更容易阅读、分享和验证。以下R代码规则是在谷歌的整个R合作用户社区下进行设计的。符号和命名(Notation and N...
  • qq_27755195
  • qq_27755195
  • 2016年06月05日 02:55
  • 2827

数据分析与R语言视频教程

http://v.youku.com/v_show/id_XNjk0NzUzOTU2.html
  • niho
  • niho
  • 2014年12月08日 21:05
  • 803

R语言代码规范

发布者:书生刺客                      时间:2012年11月20日 14:45 1、一般性规则 避免使用attach 写函数是尽量少的使用s...
  • dongkaii
  • dongkaii
  • 2014年03月04日 09:20
  • 1108

【R语言】【规范】编程规范

Google发布R语言格式规范内部指导 原创                                                2016-09-06             ...
  • tobeyourlover
  • tobeyourlover
  • 2016年09月20日 10:48
  • 1122

如何高效率学习R?[转自微信:R语言中文社区]

学R主要在于5点三阶段: 第一阶段有一点: 基础的文件操作(read.*, write.*)、数据结构知识,认识什么是数据框(data.frame)、列表(list)、矩阵(matrix)...
  • malingshuma
  • malingshuma
  • 2016年07月18日 22:35
  • 1378

R语言书籍的学习路线图

本文转载至:http://yishuo.org/r/2012/01/19/how-to-learn-r-by-reading-books.html 说明:由于内容可随时更新,为保证信息准确转...
  • robertsong2004
  • robertsong2004
  • 2014年09月10日 16:47
  • 2775

聊聊我的R语言学习路径和感受

作者:刘顺祥个人微信公众号:每天进步一点点2015第一次接触R语言是我读研的时候,算到现在有5年多了。R语言可以算得上是我进入编程世界的启蒙语言,尽管在大学期间为了考试而被迫学习过计算机二级,但那真心...
  • kMD8d5R
  • kMD8d5R
  • 2018年01月03日 00:00
  • 434

R语言学习之基础知识一

1. R对象         对象是R语言两个主要概念之一,另一个是函数。        R对象可以看作是具有关联名称的存储空间。R中的一切都存储在对象中。所有的变量、数据、函数都以命名对象的形式...
  • harry_helei
  • harry_helei
  • 2017年01月18日 10:36
  • 621

R语言学习二——工具的使用

R语言学习(二)本章学习R语言相关开发工具的使用: 软件下载 软件安装 RStudio的使用 R扩展包的安装与载入 容易遇到的问题 一、软件下载(RStudio) Rstudio下载地址 选择免费版的...
  • u010872003
  • u010872003
  • 2017年07月23日 13:37
  • 403

R语言学习-实例一

一个综合性实例(来自炼数成金)模拟产生统计专业同学的名单(学号区分),记录数学分析,线性代数,概率统计三科成绩,然后进行一些统计分析 先简单介绍几个函数: 正态分布函数rnorm() 泊送分布函...
  • wwwlxz
  • wwwlxz
  • 2015年03月09日 11:08
  • 2026
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:R语言学习之<代码规范>
举报原因:
原因补充:

(最多只允许输入30个字)