R语言基础
本节概述R语言的基本知识。用稍微简单的方式讲述,而将一些细节问题轻轻带过是有必要的。虽然包含一节关于编程的简单介绍,但是这部分内容的重点是介绍交互界面使用中的一些有用的东西,而不是具体编程。
表达式和对象
R的一个基本交互模式是表达式求值。用户输入一个表达式,系统计算它并输出结果。一些表达式并不是为计算结果而是有一些其他用处,比如生成一个图形窗口或写入一个文件。所有的R表达式返回一个值(可以是NULL),但有时它是不可见的,而且不被输出。
表达式通常包含变量引用、运算符(比如+)、函数调用,以及其他尚未介绍的项目。
表达式作用于对象。对象是一个抽象的术语,可以针对任何可以给变量赋值的事物。R包含几种不同类型的对象。到目前为止,我们基本上只看到向量,但几种其他类型的变量也将在本章介绍。
虽然对象可以抽象地讨论,但如果没有如何生成它们以及可以用它们来做什么的例子来说明的话,读起来可能会十分枯燥。另一方面,许多表达式结构如果没有它们所针对的工作对象的知识的话,介绍起来也没有太大意义。因此,后续几节将在介绍新的对象和新的语言元素之间交替进行。
函数和参数
关于函数,你已经有过R是如何工作的印象了,我们也已经在讨论作图函数及其他函数时使用过一些特殊的术语。有一点是关键:R中的许多工作都是通过函数调用来完成的,函数调用看起来像是一个或几个变量的数学函数的应用,比如log(x)或plot(height,weight)。
调用函数的格式是在函数名后由圆括号包含起来的一个或几个参数。比如在plot(height,weight)中,plot是函数名,参数是height和weight。这些称为实参,仅适用于当前调用。函数也有形参,它们在调用中与实参相联系。
当你输入plot(height,weight)时,R假设第一参数对应x,第二参数对应y。这称为“位置匹配”。如果一个函数有很多参数,你不得不将每一个都输入而且记住它们在序列中的位置,所以使得函数调用起来很麻烦。幸运的是,R中有方法避免这个问题:大多数参数有合理的默认值,在标准情形下可以省略,当你不希望是默认值时,也有非位置的方法指定它们。
plot函数事实上就是一个有大量可选输入参数的例子,这些参数可以用来修改绘图符号、线宽、标题、坐标轴等。当用plot(height, weight, pch=2)把画图符号变成三角形时,我们使用了指定参数的另外一种形式。
形式pch=2称为指定实际参数,它的名字可以用函数的形式参数匹配,从而允许参数的关键字匹配。关键字pch用来说明参数的作用是指定作图特征。这种类型的函数参数可以用任一顺序指定。因此,你可以输入plot(y=weight,x=height),也可以用plot(x=height,y=weight)得到相同的图形。
参数设定的两种方式——位置和指定——可以在同一调用中混合使用。
即使一个函数调用中没有参数,你也必须写圆括号,比如ls()用来显示工作区的内容。一个容易犯的错误就是略去了(),这将显示一段R代码,因为输入ls本身意味着你想看到函数的定义而不是去执行它。
函数的形参是函数定义的一部分。一个函数的形式参数可以通过如下方式看到,以plot.default为例(这个函数是当把变量x传递给plot时不指定特定的作图方法时调用的):