R语言入门基础——基础操作篇(二)


     作者:天人

     来源:天人的自我修养

上一篇讲了R语言中关于赋值、数据类型、对象类型的相关知识,这篇来细说下对象类型的知识。说之前先来说下数据结构的类型,数据结构的类型包括:向量、矩阵、数组、数据框、列表,是不是发现 向量、矩阵、数组、数据框、列表在对象类型中出现过,其实这很简单,可以理解为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、时间序列

时间序列是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。

◆ ◆ ◆  ◆ ◆

长按二维码关注我们


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

猜你喜欢

 笑死人不偿命的知乎沙雕问题排行榜

 用Python扒出B站那些“惊为天人”的阿婆主!

 全球股市跳水大战,谁最坑爹!

 上万条数据撕开微博热搜的真相!

 你相信逛B站也能学编程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值