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发布R语言格式规范内部指导 原创                                                2016-09-06             ...

R语言学习系列(数据挖掘之决策树算法实现--ID3代码篇)

转载自:http://blog.csdn.net/hawksoft/article/details/7760868 1、辅助类,用于计算过程和结果存储 [csharp] vie...

r语言ggplot2包学习笔记(上:代码+注释)

ggplot2包学习的课堂笔记~

机器学习算法简介和代码(P&R语言)

机器学习算法,P&R语言
  • vivimiu
  • vivimiu
  • 2016年12月07日 05:33
  • 390

机器学习十大算法总览(含Python3.X和R语言代码)

一监督学习 二无监督学习 三强化学习 四通用机器学习算法列表 线性回归Linear Regression 逻辑回归Logistic Regression 决策树Decision Tree 支持向量机S...

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

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

第三章 概率与分布的r语言代码

3.1随机抽样 1)等可能的不放回的随机抽样的样本 sample(x, n)#x为要抽取的向量,n为样本容量 sample(1:52, 4)  #从52张扑克牌中抽取4张 [1] 3 16 ...

直方图和核密度估计图r语言代码

4.2.1直方图 hist()的调用格式 hist(x,breaks="Sturges",freq=NULL,probability=!freq,col= NULL, main=paste("H...

R语言-将数据按照月份、季度、年份划分及求某个代码(地名、产业名等)对应的累积值

R语言-将数据按照月份、季度、年份划分及求某个代码(地名、产业名等)对应的累积值...
  • Trisyp
  • Trisyp
  • 2016年08月26日 10:54
  • 1103

一行代码更新R语言

博客中已经陆续更新了两篇关于R语言的文章(相关系数矩阵可视化和读取Excel),按照上一篇挖的坑,这一期讲的是如何只用一行代码更新R语言。 这里还是重新认真介绍下R语言(我真的只是凑个字数) ...
  • ESA_DSQ
  • ESA_DSQ
  • 2017年03月23日 19:56
  • 739
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:R语言学习之<代码规范>
举报原因:
原因补充:

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