使用R软件进行统计分析, 必须要接触R脚本. R脚本是保存了R代码的文本文件, 一般以.R为扩展名.
要高效得进行代码的编写和调试, 需要一个好的编辑器或者好的编程环境. 当然, 每个人都可以使用最简单的文本编辑, 如Windows Notepad 或者Rgui所提供的文本编辑工具, 但是要避免使用MS word等文档编辑器编辑R脚本.
编辑器最好能符合以下要求:
等宽字体, 如Consolas, Courier New 等, Consolas配合微软雅黑字体是不错的选择.
代码高亮显示, 意思是对字符串, 数字, 以及语言的关键词, 以及注释部分 分别用不同颜色显示出来.
括号配对, 小括号, 中括号以及花括号成对匹配时同时高亮显示.
提供良好的 正则表达式匹配, 以及特殊字符匹配, 如针对 n, t, r等特殊字符的匹配, 以及替换.
列模式, 即同时对多个列进行输入, 或者编辑.
编码转换工具, 如UTF-8编码转ASCII, GBK18030, BIG5等等.
大小写转换工具
快速运行功能, 如一键运行代码.
显示行号
具有导出为html功能或者Latex, 或RTF等功能
字体大小能够灵活控制, 一般通过按住Contrl并转动鼠标滚轮, 即可调整显示字体的大小.
在众多的编辑器中, 符合这种要求的恐怕不是很多. 目前比较理想的, Windows下是Notepad++, Linux下则是Geany, MacOS下的编辑器则不太了解. 试用过gedit, Kate, 它们都提供了R的高亮, 但是似乎还是不够灵活. 甚至Rstudio这样专门为R设计的IDE, 还是有很多功能没有实现, 所以并不能让人十分满意.
说到编程习惯, 难免老生常谈. 例如, 什么要缩进, 要提供详细的注释等等. 这和其他编程语言并无区别. 然而R毕竟还是有自己的特点, 所以这里还是列出来一些经验:
在开始分析前, 一定要先简要查看数据的分布, 以确定所选择的统计方法. 在开始编写函数前, 应该对要数据的数据格式, 以及输出的数据有清楚的理解.
所有的R脚本, 以应R作为扩展名, 这样编辑器打开时能够默认是R语言的高亮, 从而节省选择语言高亮的时间.
R脚本建议以 #### 开头, 然后写清楚 该脚本的标题, 作者, 日期, 联系方式等, 这样, 日后查看脚本这部分注释代码, 有很好的参考作用.
第一句写 setwd(), 指定工作目录. 任何一个任务, 都应该单独创建一个文件夹, 其中放数据, R脚本, 以及运行的结果等
随后是加载该脚本需要用到的程序包 如
library(vegan)
, 每一行只加载一个程序包, 直到所有用到的程序包全部加载.脚本中定义的函数要在加载程序包之后立即定义.
如果数据是保存在xls文件中的, 每个xls文件只保存一个data_sheet. xls文件尽量保存为csv文件, 再读取, 不要保存为txt文件, 因为read.csv()比read.table()要稳定很多. 如果数据是保存在xlsx文件中的, 尽量用 openxlsx程序包所提供的函数read.xlsx()读取数据.
变量的名称要具体,并且只用ASCII码字母, 要避免A,B,C,D,X等类似的变量名. 变量命名时, 尽量不要大小写混搭, 不同部分用下划线_分隔. 理想状态是, 即使不看注释, 只看变量的名称, 也可以知道变量的意义.
算法的关键部分, 要注释, 特别容易出错的地方也要注释. 但是注释不能滥用. 数据处理的名称, 还应该通过变量名体现出来.
缩写的函数要尽量简单明确, 以方便维护.
写函数时要善用 warning, stop等处理异常的函数, 以便规范数据输入.
要尽量学会 git, 以记录所有关键的更改.
一个R脚本, 拷贝到R console运行时, 应该能够全部自动运行, 中间不能再要求手动输入参数.
保存R生成的图像, 应该尽量用 tiff函数和dev.off()配合. 不要再用手动保存的方法.
生成R程序包骨架时, 用
package.skeletons()
, 然后分别编写Rd的函数帮助文件. 很多投机取巧的办法编写R程序包只能让问题更加复杂.为了简化绘图编程, 应该尽快掌握ggplot2程序包.
为了克服计算瓶颈, 应该学会C或者FORTRAN语言, 也可以运用Rcpp结合C++, 并用R调用
及时注意R的更新, 参考如 https://github.com/qinwf/awesome-R 以及CRAN Task Views的动态.
张金龙
2016年2月1日