R语言入门基础——基础操作篇(二)
作者:天人
来源:天人的自我修养
1、向量(vector)
向量是R语言中最基本的数据类,也是最常用的类型,配合执行组合功能的c()可以用来创建向量。如下:由图可以看到a、b中存储的为数值型数据,c中存储的为逻辑型,d中存储的为字符型数据,但是有一点要注意,就是单个向量中的数据必须为同一类型的数据(数值型(包含整数型)、字符型、逻辑型)。顺便再提一点,如果你要创建一个没有数据的向量(简称空向量)可以使用vector()函数,而且创建的空向量的长度、类型是可以指定的,使用方式如下:
#创建空向量
e(不一定要赋值给e,可以自己定义)<-vector('输入要创建的数据类型',length=输入要创建的长度)
光看可能没有什么感觉,所以下面创建几个给大家看看。
代码如下:
#创建一个长度为5的数值型空向量
e<-vector('numeric',length=5)
e
#创建一个长度为6的逻辑型空向量
f<-vector('logical',length=6)
f
#创建一个长度为10的字符型空向量
g<-vector('character',length=10)
g
运行结果如下:
2、矩阵(matrice)矩阵是具有维度属性的向量,矩阵都是二维的,和向量类似矩阵中也仅能包含一种数据类型。有的人可能无法理解什么是二维,为了让大家能理解我还是画个图来解释下,这是一维的图形。这是二维的图形
这三维的图形
因为我不是美术专业的所以最多只能画成这样请大家见谅,由图可以看到一维的图形如果要延伸只能朝一个方向延伸,二维的图形可以朝两个方向,三维的方向可以朝三个方向延伸,这样说会不会更容易理解。关于维度的问题就说到这里,回到主题继续说说矩阵,矩阵是一个矩形阵表,包含行和列。矩阵还可以进行四则运算,还有求特征值、特征向量等运算。我们可以使用matrix函数来创建矩阵,基本格式如下:matrix(data,nrow,ncow,byrow,dimnames)
关于matrix常用的参数表如下
参数 | 描述 |
data | 矩阵所包含的元素 |
nrow | 行的维数 |
ncol | 列的维数 |
byrow | 矩阵的元素是否按行填充,默认值为FALSE,即默认按列填充 |
dimnames | 以字符型向量表示的行名和列名 |
matrix(data=要用来创建矩阵的向量名或向量具体内容,nrow=输入要设置的行数,ncol=输入要设置的列数,byrow=选择T为按行填充选择F为按列填充,dimnames=list(c('输入要设定的行名'),c('输入要设定的列名')))
矩阵的行数和列数要根据要来填充矩阵的向量数目来决定。matrix中最后一个参数是属于可写可不写,如果需要设定行名和列名时才需要。说了这么多还是来点实践比较好,实践代码如下
#创建矩阵
h<-c(1:9) #1:9表示1到9内的所有整数
matrix(data=h,nrow=3,ncol=3,byrow=T)
运行结果如下
如果需要将矩阵保存下来就需要赋值了,这个步骤说了好几次就不说了。3、数组(array)
数组与矩阵类似,唯一的区别在于矩阵是二维的,而数组可以突破二维,换句话说数组的维度可以大于2,但是矩阵的维度只能等于2。数组是多维同一类型的集合(字符型、数值型、逻辑型、复数型)。创建数组可以用array函数来创建,基本格式如下
array(data,dim,dimnames)
array函数的参数描述如下表
参数 | 描述 |
data | 数组的元素 |
dim | 数组的维数 |
dimnames | 各维度的名称 |
array(data=用于做数组的向量或向量内容,dim=维度数(举个例子如果想要创建一个三位的数组就写成这样c(长,宽,高)),dimnames=依旧是维度的名字)
实践代码如下
#创建一个长宽高均为三的数组
i<-c(1:27)
array(data=i,dim=c(3,3,3))
运行结果
虽然创建的数组是三维但是程序框输出的结果最多只能到达二维,所以输出的结果也从三维转换成二维的。4、数据框(Data Frames)数据框是仅次于向量的最重要的数据对象类型,它是R语言中最常处理的数据结构。数据框中的一列代表某一变量属性的所有取值,一行代表某一样本数据。这么所可能还是不具体,还是先上基本格式再放实践好了。
基本格式
data.frame(col1,col2,col3) #数据框中不止可以放三列,可以放很多列只是就写了三列做例子
实践代码:
j<-c(1:6)
k<-c('张三','李四','王五','赵六','赵四','王一')
l<-c(TRUE,FALSE,TRUE,FALSE,TRUE,TRUE)
m<-c(1.2,3.5,4.3,2.4,5.6,8.7)
data.frame(j,k,l,m)
运行结果
运行完你会发现数据每行的列名有点不好看,对于列名的改法有很多,我们先说在创建的时候就改好的方法。代码
j<-c(1:6)
k<-c('张三','李四','王五','赵六','赵四','王一')
l<-c(TRUE,FALSE,TRUE,FALSE,TRUE,TRUE)
m<-c(1.2,3.5,4.3,2.4,5.6,8.7)
data.frame(序号=j,名字=k,是否正确=l,积分点=m)
结果
对比两份创建数据框的代码可以看出,其实对于列名的设置就差了个列名的定义,就是“列名=向量”。5、列表(list)向量、矩阵和数组只能存储同一类型的数据,数据框可以存放不同类型的向量数据,但要求每一列中的数据类型和长度必须相同。而列表却可以将不同类型、不同长度(或大小)的数据结合在一起。创建列表可以使用list函数,基础格式。
list(object1,object2,object3) #和数据框一样可以多列
list函数也和数据框一样可以命名,方法和数据框一样(对象名字=object)实践代码j<-c(1:6)
k<-c('张三','李四','王五','赵六','赵四','王一')
l<-c(TRUE,FALSE,TRUE,FALSE,TRUE,TRUE)
m<-c(1.2,3.5,4.3,2.4,5.6,8.7)
n<-c(2,34,55,6,7,6,6686,76,54,4,543,32,3)
list(序号=j,名字=k,是否正确=l,积分点=m,积分=n)
因为比较懒就没有再去编数据了,就在之前的基础上加了一个。运行结果对了,忘记说了数据框和列表都是二维。6、因子(factor)
因子是R语言中比较特殊的一个数据类型, 它是一个用于存储类别的类型,就像你回答一个问题是或者否,又或者在买奶茶时要求糖的甜度那样,表示分类的数据称为因子,所有因子可以是字符型数据也可以是数值型数据(含整数型),并且因子具有水平(levels)用于限制因子的范围。
7、时间序列
◆ ◆ ◆ ◆ ◆
长按二维码关注我们
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
评论