
1.3 R的简单操作
R是进行数学运算、数据处理和科学计算的强大工具。下面给出一些R的简单操作示例。
1.3.1 基本数学运算
从1+1开始示例:

运行后返回值为2。下面是复杂一点的运算示例:

由此可以看出,R中的计算遵循数学运算的顺序,优先级从高到低依次为小括号、乘除、加减。
1.3.2 变量
变量是任何语言中都不可缺少的一部分,R中不需要事先定义变量的类型,它可以存储任何类型的数据,也可以存储任何R对象,如函数、分析的结果及图形。单个变量在某一时刻取值为数字,而后可以被赋值为字符,也可再赋值为数字。
1.3.2.1 变量赋值
对变量进行赋值不受赋值类型的限制,有效的赋值操作符号是“<-”和“=”,建议用前者,赋值符号“<-”是一个整体,中间不能有空格。例如:

以上示例创建了两个变量x、y,分别赋值为3、4,并计算了两个变量的和。
1.3.2.2 删除变量
用rm函数可以删除用户已定义的变量且删除后的变量无法找回,这一点在使用该命令时要特别注意。例如:

以上示例说明rm删除变量命令会立即生效。
1.3.3 数据结构
R可以处理各种类型的数据,包括向量、矩阵、数组、数据框和列表,不同类型的数据在创建方式、结构复杂度及调用个别元素的方法等方面有所不同。
1.3.3.1 创建数据对象
创建向量、矩阵、数组、数据框和列表的函数依次为c()、matrix()、array()、data.frame()和list()。
创建向量示例:

以上示例创建了a、b、d、e 4个向量。a是由数字组成的一维向量,b由字符串组成,d由数字和字符串组成,e由向量a和b合并而成。由4个变量的构成可以看出它们的数据类型互不相同。
在R中查看数据类型的函数为mode,mode函数可以查看变量定义的数据类型。例如:

由以上示例可以看出,在R中如果向量中包含多个数据类型则会进行格式转换。例如,向量中既有数字又有字符串,为了使向量中的数据类型统一会将所有数字项都转换成字符串,如向量d 和e。
创建数据框示例:

运行结果报错,说明向量中的元素个数不同,所以数据框要求每一列元素的个数相同。例如:

运行结果的第一行为默认的列名称,第一列为默认的行数。由运行结果可以看出,数据框中的列不同数据类型也可以不同,还可以通过names()函数为每一列指定名称。例如:

创建列表示例:

列表不改变各子表的数据类型,允许每个子表中有不同的元素个数。
1.3.3.2 索引数据
R允许访问或索引数据结构中的部分元素,下面以矩阵为例进行说明。创建矩阵的函数为matrix(vector, nrow=number_of_rows, ncol=number_of_columns, byrow=logical_value, dimnames=list(char_vector_rownames, char_vector_colnames)),以vector为元素组成以number_of_rows乘number_of_columns的矩阵,元素的排列方式默认先按行排列,以dimnames列表中的第一个子表为行名称,第二个子表为列名称。

因为矩阵是由向量生成的,所以矩阵中的数据类型也只能是相同的,是数值型就都是数值型,是字符型就都是字符型。例如:

向量、数据框、列表的索引及访问方式与矩阵类似,数据框、列表的访问还可以通过列名称进行。例如:
