R语言遵循程序编码风格准则的意义在于, 编R语言程序的人有了一个编程的通用词汇表, 于是人们可以专注于您 在说什么, 而不是您是 怎么说 的. 提供全局的编码风格规则就能便于R语言爱好者能更好了解这些词汇。
在2016年,Google发布了R语言编程规范指导,一共有15条,分别有:覆盖文件名规范,变量名规范,每行代码长度,缩进,花括号使用,赋值表达,if else,分号的不使用,函数定义,函数注释等等。
R语言的代码规范总结起来有以下内容:
1.对象命名要赋予意义
2.使用空行来分割逻辑
3. 必要时使用注释和花括号
4.不用的代码和引用删除,代码整洁,精炼而富有含义。
5.不要用中文拼音做变量名,提高代码水平层次
6.代码程序可用,清晰优雅,高效
7.多写代码,多思考, 常常回顾代码。
(1)通常“<-”被认为是赋值,”=”是传值。前后最好空一格进行代码书写。
修改前
newdata<-read.csv(PArameter4)
修改后
newdata <- read.csv(PArameter4)
(2)注释前放一个空格,即书写#号后,空一个写注释,注释养成英文注释的习惯。
修改前
#Get data information newdata <- read.csv(PArameter4)
修改后
# Get data information newdata <- read.csv(PArameter4)
(3)函数参数列表里一般参数之间,后面可放一个空格。
多加空格 (即, 在行内使用多于一个空格) 也是可以的, 如果这样做能够改善等号或箭头 (<-) 的对齐效果.
修改前
print(paste("Parameter1 information",PArameter1),sep=" ")
修改后
print(paste("Parameter1 information", PArameter1), sep=" ")
(4)摘录大神语句:
骆驼式命名法(Camel-Case)又称驼峰式命名法,是电脑程式编写时的一套命名规则(惯例)。正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。
谷歌R语言代码风格规定:
(1)程序文件命名以.R结尾命名
(2)标识符命名:variable.name, FunctionName, kConstantName
在标识符中不要使用下划线 ( _ ) 或连字符 ( - ). 标识符应根据如下惯例命名. 变量名应使用点 (.) 分隔所有的小写字母或单词; 函数名首字母大写,不用点分隔,常数命名规则同函数,但需使用一个K开头。
(3)代码单行长度:不超过80个字符
(4)缩进:指两个空格,且不能使用制表符号
(5)花括号, 前括号永远不应该独占一行,前括号在最后一行末尾 ; 后括号应当总是独占一行.即后括号单独占据一行。花括号即:{ },
(6)赋值符号,用 "< - " 而不用“=”
(7)分号,尽量不要使用。不要以分号结束一行, 也不要利用分号在同一行放多于一个命令. (分号是毫无必要的, 并且为了与其他Google编码风格指南保持一致, 此处也需要略去.)
(8)注释准则:行外所有注释以#号开头,后接一个空格; 而行内注释需要在 # 前加两个
空格。
(9)逗号后面总需要加上空格。
(10)不要向圆括号或方括号中的代码两侧加入空格.
(11)if ( a>1 ) # a>1 的两边不要加空格,即括号内不要加空格, 避免逻辑条件的前后发生错误,而在前括号if前面要加空格,但在函数引用中不需要加空格。例如plot(data)中括号前后无空格,和上述的if相反
(12)使用 attach 造成错误的可能数不胜数. 避免使用它.rm(list=ls())用于清除所有的变量。
(13)部分英文名称不能作为对象名,函数命名应以动词或者动词性短语为主,例如
if=1
错误: 意外的’=’ in “if=”
(14)空格:所有的二元操作都需要空格,(=,+ ,- ,<-)前后都需要空格。
(15)短注释,通常放在一行代码的后面,在代码较长时也可以另起一行进行注释,但要尽量保证每行代码要对齐,不然代码加注释混一起乱糟糟的一团很影响心情。
(16)函数和变量的命名则需要尤其小心,在 R 环境对于大小写是极其敏感的,变量名应该都使用小写字母,而函数名则可以在首字母使用大写,另一点需要注意的是变量和函数命名时应尽量避免与 R 环境中本身存在的一些函数或者变量重名,不然系统也会混乱弄不清的。不同单词间可以用 . 或者 _ 来连接,看个人习惯,但貌似谷歌的 R语言代码规范上要求使用 . 来连接。而命名函数则尽量不要使用下划线或者点连接符,在单词选择上也较好能体现函数的动作,以动词来命名函数。
R语言:少用循环而多用 R 自带的向量化运算。R 的循环效率极低,能不用则不用。关于 apply 函数族的用法运算精髓应多加进行整理。
sum <- 0 for (i in 1:100) { sum = sum + i if (i==101) { break #如果条件达到,则中止循环# } if (i==102) { next #条件(不)满足,则执行下一条循环# } } print(sum)