谷歌R语言格式指南

简介:


◆ ◆ 

总结:R格式规范


1. 文件名:以.R结束

2. 标识符:variable.name (或 variableName), FunctionName, kConstantName

3. 单行长度限制:至多80个字符

4. 缩进:两个空格,不要使用“tab”

5. 空格

6. 花括号:左花括号在同一行上,右花括号另起一行

7. else:else的前后都是花括号

8. 赋值:使用“<-”,而不是“=”

9. 分号:不要使用

10. 整体布局和顺序

11. 注释准则:所有的注释都应该以#开头并且紧跟一个空格,如果注解与代码在同一行内,那么在#之前需加两个空格

12. 函数的定义和调用

13. 函数文档

14. 函数示例

15. TODO格式:(TODO(用户名))


◆ ◆ 

R语言规则


1. attach:避免使用

2. 函数:用stop()命令引发出错

3. 对象和方法:尽量避免使用S4对象和方法;不要将S3和S4混用

符号与命名


文件名


文件名应该以.R结尾,而且文件的命名应该具有实际意义

好的例子——predict_ad_revenue.R

不好的例子——foo.R


标识符


不要在标识符中使用下划线(_)或者连接符(-)。标识符应该遵照以下约定来命名。变量名的首选形式是全部采用小写字母并且用小数点(.)来区分词(variable.name),但是variableName也是可以接受的;函数名首字母要大写并且不带有小数点(FunctionName);常量和函数名类似,但以k开头。


  • 首选variable.name,variableName也可以接受

好的例子:avg.clicks

可接受的例子: avgClicks

不好的例子: avg_Clicks


  •  函数名 FunctionName

好的例子:CalculateAvgClicks

不好的例子: calculate_avg_clicks , calculateAvgClicks


函数名应该用动词形式表示。


例外:当创建一个类对象,函数名(构造的)和类应该相互匹配(例如:lm)


  • 常量:kConstantName

语法


单行长度


单行的最大长度为80个字符


缩进


在缩进代码的时候,用两个空格。千万不要用tab或者把tab和空格混合使用。

例外:当圆括号里的内容出现分行的情况时,对准括号里的行首与换行的第一个字符。


空格


在所有二元运算符(=, +, -,<-,等等)的前后都加上一个空格


例外

①调用函数传递参数时,“=”前后的空格可加可不加;

逗号前面不要有空格,但是逗号后面要带一个空格。


好的例子——


不好的例子——



除非是调用函数,其余情况下应该在左圆括号前加上一个空格


好的例子——


if (debug)


不好的例子——


if(debug)


如果加上额外的空格(也就是说在一行中超过一个空格)能够使等号或者箭头看起来更整齐,那也是可以的。




不要在圆括号或者方括号里面的代码前后加上空格


例外

在逗号后面总是要加一个空格


好的例子——



不好的例子——



花括号


左花括号不能单独成行;右花括号一定要单独成行。可以在只有一个语句的代码模块里省略花括号; 但是必须保持对所有的单个语句的代码的一致性。



也可以写成:



一个模块的语句总是另起一行


不好的例子——



else前后的花括号


else语句应该总是在同一行中被花括号围绕着


if (condition) {

  one or more lines

} else {

  one or more lines

}


不好的例子——




不好的例子——




赋值


Use <-, not =, for assignment.

用“<-”来赋值,而不是等号“=”。


好的例子——

x <- 5


坏的例子——

x = 5


分号


不要用分号作为行的结束,或者利用分号在一行中写上多个命令。(分号是不必要的,根据其它Google格式指南的一致性,可以省略)

组织


◆ ◆ 

总体布局和顺序


如果每一个人都使用通用的顺序,那么我们将更快及更容易地阅读和理解其他人的脚本。

1. 版本声明注释

2. 作者信息

3.文件描述注释,包括程序的功能、输入和输出

4.Source() 和 library()声明

5.函数定义

6.执行语句声明,如果适用的话(如:print,plot)

单元测试应该在一个名为originalfilename_test.R 的单独文件中。


◆ ◆ 

注释指南


注释代码——①必需以“#”及一个空格开始注释行;②可以在代码之后加上两个空格,然后以“#”及一个空格开始一个短小的注释。



◆ ◆ 

函数定义和调用


函数定义首先列出不带默认值的参数,随后是带默认值的参数。在函数定义和调用中,一行可以有多个参数;赋值语句之间可以换行。


好的例子——


不好的例子——


理想情况下,单元测试应该作为样本函数调用(共享库路径)。


◆ ◆ 

函数文档


函数应该包含紧接着函数定义行的一个注释部分。这些注释应该包含用一句话完成的函数的描述;函数的参数列表,记作Args以及每个参数的描述(包括数据类型);返回值的描述,记作Returns。注释应该描述得足够清楚,调用者可以不用看函数代码就使用它。


函数示例



  


◆ ◆ 

TODO风格


在代码中始终用相同的TODO风格


TODO(username):明确说明要采取的行动


语言


附加


使用attach出现错误的可能性很高。避免使用。


函数


用stop()引发出错


◆ ◆ 

对象和方法


S语言有两个对象系统,S3和S4,它们在R中都是可用的。S3是更加交互式的和灵活的,而S4是更加正式的和严格的。(这两个系统的说明,参考Thomas Lumley的《Programmer’s Niche: A Simple Class, in S3 and S4 in R》


用S3的对象和方法,除非有强烈的理由要使用S4的对象或方法。用S4对象的一个主要理由是在C++代码中直接使用对象。用S4通用/方式的一个主要根据是由两个参数调度。


避免混合使用S3和S4:S4方法忽略S3的继承,反之亦然。


例外——

上面描述的代码约定应该遵循,除非有一个合理的原因使用其它约定。例外包括正常的代码和修改的第三方代码。

原文发布时间为:2016-10-09


本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号


相关文章
|
算法 Linux Python
SGAT丨基于R语言tidyverse的vcf转txt文件算法,SNP位点判断与自动校正,染色体格式替换
SGAT丨基于R语言tidyverse的vcf转txt文件算法,SNP位点判断与自动校正,染色体格式替换
|
存储 数据处理 对象存储
R语言-稀疏矩阵对象格式介绍&重构方法
在单细胞领域,基于稀疏矩阵对于处理 scRNA-seq 表达谱数据这类大型数据是非常必要的,因为构建分析对象的时候稀疏矩阵相比稠密矩阵拥有更高的数据处理效率和速度。本文重点介绍 在R语言平台关于 Matrix包中Sparse Matrix对象的格式, 与Dense Matrix的转换以及重构方法。
548 0
R语言-稀疏矩阵对象格式介绍&重构方法
|
4月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
3月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
67 3
|
8月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
8月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
4月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
5月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
5月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
5月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。