第2章 创建数据集
《R语言实战》笔记系列
本章学习大纲
1.R的数据结构
2.输入数据
3.导入数据
4.标注数据
第一部分 R的数据结构

1.向量
向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可以创建向量。
单个向量中的数值必须拥有相同的类型或模式(数值型、字符型、逻辑型)
通过在方括号中给定元素所处未指定的数值,即可访问该向量的元素。
ps:标量是指只含有一个元素的向量。例如:f<-3、a<-"US"

2.矩阵
矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型、逻辑型)。可通过函数matrix()创建矩阵。
一般格式:
myymatrix<-matrix(vector,nrow=number_of_rows,ncol=number_of_columns,byrow=logical_value,dianames=list(char_vector_rownames,char_vector_colnames))
vector为包含在该矩阵的元素,nrow和ncol指定行和列的维数,dimnames是指以字符型向量表示行名和列名。byrow表明矩阵是按行填充(byrow=TRUE)还是按列填充(byrow=FALSE),默认按照列填充。
同理,用方括号查询元素,用向量函数选择多行或多列的元素例y[1,c(1,2)]或者x[,2]


3.数组
数组(array)与矩阵类似,但是维度可以大于2。
数组通过array()来创建。
一般形式:myarray<-array(vector,dimensions,dimnames)
vector代表数组中的数据,dimensions是一个数值型向量,给出各个维度下标的最大值。(简单的理解就是设定一个矩形的长,宽,高)
通过方括号来选取元素,如z[1,2,2]为4

4.数据框
数据框的不同列包含不同的模式数据如(数值型、字符型)
数据框通过函数data.frame()来创建

符号$是被用来选取一个给定数据框中的某个特定变量。可以用来生成几个不同变量的列联表。

函数attach()可以将数据框添加R的搜索途径中。R在遇到 一个变量名后,会检查搜索路径中的数据框。函数detach()将数据框从搜索路径中移除。但detach()并不会对数据框中的数据做任何处理。
attach()就是指定搜索区域,可以让R缩小搜索范围。

如果在数据框mtcars被绑定(attach)之前,已经有一个名为mpg的对象,这种情下,原始对象将获得优先权,会报错,如下图所示

函数with()与attach()功能相近,但wih()局限性在于赋值只在函数的括号内生效。
如果需要创建在with()结构以外存在的对象,使用特殊赋值符<<-替代标准赋值符(<-),就可以将对象保存在with()之外的全局环境。如下图所示

实例标识符(case identifier)用于区分数据集不同的个体,如上例的病人编号(patientID)。在R中可以通过数据框操作函数中的rowname选项指定。

5.因子
在R中名义型变量和有序型变量称为因子(factor)
名义型变量:没有顺序之分的变量。如:糖尿病类型Type1、Type2,直接用factor()赋值即可。
有序型变量就是有顺序关系的变量。如:病情分为poor,improved,excellent,在函数factor()中需要添加参数ordered=TRUE.由于电脑默认的顺序不一定是对的,所以经常用参数levels来设定顺序。(往往从低到高排序)

数值型变量可以用levels和labels参数来编码成因子。

6.列表
列表(list)是R的数据类型中最复杂的一种,一般来说,列表是各种类型对象的有序集合。

可以通过双重方括号来代表某个成分的数字或名称来访问列表中的元素。也可以用$和""。

第二部分 R的数据输入

未完待续